plainswalker
Goto Top

Verborgene Informationen aus einem E-Mail-Header vor einem E-Mail-Body bei Weiterleitung automatisch reinschreiben - Outlook 2010

Hallo zusammen!

Folgende Konstellation:

Ich habe X Weiterleitungsadressen und eine Empfängeradresse.
Wenn eine E-Mail an eine der Weiterleitungsadressen geschickt wird und automatisch an meine Empfängeradresse geleitet wird, kann ich nicht mehr erkennen an welche
Weiterleitungsadresse die E-Mail versandt wurde.
Mir ist klar, dass ich bei einer im neuen Fenster geöffneten E-Mail, mit einem Klick auf den Pfeil im Bereich "Kategorien" diese Information erhalte.
Das ist allerdings nicht der Vorgang, wie ich ihn anstrebe.

Ziel ist es, die Information "To: weiterleitungsadresse@e-mail.de" aus dem Header bei jeder automatischen Weiterleitung mit einer Trennlinie noch vor dem E-Mail-Body ins Textfeld zu schreiben.

Hat jemand eine Idee wie das zu lösen ist, bzw. ob das überhaupt möglich ist?

Gruß

plainswalker

Content-ID: 243581

Url: https://administrator.de/contentid/243581

Ausgedruckt am: 22.11.2024 um 08:11 Uhr

colinardo
Lösung colinardo 14.07.2014, aktualisiert am 15.07.2014 um 15:56:50 Uhr
Goto Top
Hallo plainswalker,
Hat jemand eine Idee wie das zu lösen ist, bzw. ob das überhaupt möglich ist?
Outlook hat dafür die Posteingangs-Regeln über die du die Mails ausfiltern und unterschiedlichen Ordnern zuweisen kannst.
Hier gibt es die Bedingung mit bestimmten Wörtern in der Nachrichtenkopfzeile, mit der du das gewünschte erreichen kannst.
Ansonsten ginge dies in Outlook alternativ auch mit einem Makro das so aussehen könnte:
(In Outlook ALT-F11 drücken und den Code in ThisOutlookSession oder DieseOutlookSitzung* einfügen, dann müssen deine verwendeten Weiterleitungsadressen ab Zeile 9 eingefügt werden.) Der Code fügt nur bei Vorkommen einer dieser Mail-Adressen in der To: Zeile des Headers diese Info in der Betreffzeile hinzu. Ich habe hier die Betreffzeile gewählt, da bei manchen IMAP-Konten in Outlook in diesem frühen Stadium der Zugriff auf den Mailbody noch nicht gewährleistet ist und es so zu Fehlern kommen könnte.
Private Sub Application_NewMailEx(ByVal EntryIDCollection As String)
    On Error Resume Next
    Dim objItem As Object, objProperty As UserProperty, arrEntryIDs As Variant, i As Integer, arrName As Variant, strHeader As String, regex As Object, dicMails As Object
    
    Set regex = CreateObject("vbscript.regexp")  
    Set dic = CreateObject("Scripting.Dictionary")  
    
    'Adressen angeben  
    dic.Add "mail1@domain.de", ""  
    dic.Add "mail2@domain.de", ""  
    dic.Add "mail3@domain.de", ""  
    ' usw  
    
    'Regex Objekt auf Header vorbereiten  
    regex.MultiLine = True
    regex.Ignorecase = True
    regex.pattern = "^To:.*?([A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6})"  
    
    'Für jede eingehende Mail ...  
    arrEntryIDs = Split(EntryIDCollection, ",")  
    For i = 0 To UBound(arrEntryIDs)
        Set objItem = Application.Session.GetItemFromID(arrEntryIDs(i))
        If objItem.Class = olMail Then
            ' Header der Mail holen  
            strHeader = objItem.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x007D001E")  
            ' Mit Regex entsprechende Zeile extrahieren  
            Set matches = regex.Execute(strHeader)
            If matches.Count > 0 Then
                ' Wenn die TO-Adresse zu einer der Adressen im Dictinary passt füge die Info im Subject hinzu  
                If dic.Exists(matches(0).Submatches(0)) Then
                    objItem.Subject = objItem.Subject & " ### " & matches(0) & " ###"  
                    objItem.Save
                End If
            End If
        End If
    Next
    Set regex = Nothing
    Set dic = Nothing
End Sub
Grüße Uwe
plainswalker
plainswalker 15.07.2014 um 10:26:20 Uhr
Goto Top
Hallo, Uwe!

Die VB-Lösung ist exakt das, was ich gebraucht habe!

Danke für die Idee un die Mühe!

Gruß

Alex
colinardo
colinardo 15.07.2014 um 14:57:56 Uhr
Goto Top
dann bitte als gelöst markieren nicht vergessen face-wink

Grüße Uwe