[OUTLOOK] nervender Zeilenumbruch bei langen Links in Text-Nachrichten

LMS

Stammgast
Wer hat sich auch schon einmal darüber geärgert, dass Office beim Versenden von Nachrichten darin enthaltene Link-Adressen mit mehr als 76 Zeichen Länge sang- und klanglos automatisch umbricht. Der Empfänger der Mail erhält dann beim Klick auf die Links nur eine ungültige Seite angezeigt. Klar, der Geübte weiss sich zu helfen und kopiert auch die zweite Zeile zuerst in den Browser und ruft dann die Seite auf. Eine andere Variante ist natürlich, nur Mails im HTML und RTF Format zu versenden. Aber ich persönlich versende eigentlich ungern HTML-Nachrichten.

Die eine Lösung ist, den Wert in der Registry auf z.B. 1000 Zeichen zu erhöhen (über die Optionen selber geht das nur bis 132 Zeichen).
Das ist hier beschrieben:
http://www.outlook-stuff.com/lang-d...0-automatischen-zeilenumbruch-verhindern.html

Als alternative Lösung habe ich mir ein VBA-Skript geschrieben, das den Benutzer vor dem Versand der E-Mail darauf hinweist, wenn die Nachricht problematische Links enthält. Man kann dann entweder den Versand abbrechen, die E-Mail ins HTML konvertieren lassen oder trotzdem versenden. Vielleicht nutzt der Code auch dem einen oder anderen:

Code:
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    If (Item.BodyFormat <> olFormatPlain) Then
        Exit Sub
    End If
    'Debug.Print GetPlainWrapLen
    Dim contentArray() As String
    Dim tokens() As String
    Set re = CreateObject("vbscript.regexp")
    re.Pattern = "(ftp|https?)://.+"
    re.IgnoreCase = True                  ' case sensitive search
    re.Global = True                      ' find all the occurrences
    contentArray = Split(Item.Body, vbCrLf)
    
    For Each zeile In contentArray
        tokens = Split(zeile, " ")
        For Each token In tokens
            If (re.test(token) And Len(token) > GetPlainWrapLen) Then
                'Debug.Print zeile
                Call Question(Item, Cancel)
                Exit Sub
            End If
        Next token
    Next zeile
End Sub

Private Sub Question(ByVal Item As Object, ByRef Cancel As Boolean)
    messageText = "Vorsicht: Nachricht enthält lange Link-Adressen die umgebrochen werden könnten. " & _
      vbLf & "E-Mail als HTML formatieren?"
    messageTitel = "Microsoft Office Outlook"
    Select Case MsgBox(messageText, vbExclamation + vbYesNoCancel, messageTitel)
        Case Is = vbCancel
            Cancel = True
        Case Is = vbNo
            Cancel = False
        Case Is = vbYes
            Cancel = True
            Item.BodyFormat = olFormatHTML
    End Select
End Sub

Private Function GetPlainWrapLen()
    'Debug.Print Application.Version
    Dim wsh As Object
    Set wsh = CreateObject("WScript.Shell")
    RegEntry = "HKEY_CURRENT_USER\Software\Microsoft\Office\" & Left(Application.Version, 4) _
        & "\Common\MailSettings\PlainWrapLen"
    GetPlainWrapLen = wsh.RegRead(RegEntry)
End Function

Das ganze muss im Visual Basic Editor in "Microsoft Office Outlook Objekte / DieseOutlookSitzung" kopiert werden.

Das Skript sollte für alle Outlook Versionen funktionieren. Getestet habe ich es allerdings nur mit Office 2003 und Office 2010.

Es wird allerdings wie gewohnt nur dann berücksichtigt, wenn die Sicherheitsstufe für Makros auf "Mittel" eingestellt ist oder bei "Hoch" das Makro mit einem persönlichen Zertifikat signiert wird. Wie man sich selbst ein Zertifikat erstellt kann z.B. hier nachgelesen werden.

http://www.pctipp.ch/praxishilfe/ku...itales_signieren_eines_vba_makroprojekts.html

Viel Spass beim Ausprobieren.

Gruss LMS
 

Gaby Salvisberg

Super-Moderator
Hallo LMS

Interessante Lösung. Manchmal klappts mit den langen Links auch, indem man sie in spitzige Klammern <> setzt.

Herzliche Grüsse

Gaby
 

LMS

Stammgast
Hallo Gaby

Danke für den Hinweis. Das habe ich jetzt nicht gewusst. Setzt natürlich voraus, dass man das vor dem Versand nicht vergisst :-)

Gruss LMS
 

Gaby Salvisberg

Super-Moderator
Hallo LMS

Bei Links, die umbrechen könnten, habe ich mir das vor längerer Zeit mal angewöhnt, da es zumindest früher wirklich etwas nützte. Ich bin aber nicht sicher, bei welchen Mailclients das heute noch so funktioniert - und ob das bei HTML- und reinen Text-Mails gleichermassen nützt. Da kommts am ehesten aufs Verhalten des empfangenden Mailclients an.

Herzliche Grüsse

Gaby
 

fatpct

Neues Mitglied
Kleine Probleme

Hallo,

vielen Dank für das Skript an LMS. So wie es dort angegeben wird bekomme ich es nicht zum Laufen. Wenn ich auf "Ja" Drücke ändert sich der Messagetyp nicht auf HTML. Wenn ich trotzdem auf senden gehe, dann ist die Mail total verunstaltet. Vermurlich stimmt irgendetwas mit der Codierung nicht.

Was für mich ein viel größerers Problem ist, ist das die MsgBox nicht zu sehen ist. Sie liegt unterhalb des Nachrichtenfensters. Das ist nervig. Leider bekomme ich es nicht hin sie nach ob zu bekommen. Ok ich kann sie vbSystemModal setzen. Aber dann liegt danach das Nachrichtenfenster unter Outlook.

Meine VBA Programmierkenntnisse sind sehr begrenzt. Google war auch nicht mein Freund in diesem Fall. Kann mir jemand helfen, dass Skript so anzupassen, dass die MsgBox über der Nachricht liegt. Sie zu einer Ok-Box zu bekommen, dass habe ich geschafft. Vielleicht funktioniert die Änderung ja auch nur nicht weil ich irgendetwas nicht richtig gemacht habe?!
 
Oben