Erweitertes Outlook-Makro zur Detailanalyse von E-Mail-Kopfzeilen

Outlook VBA

Um die Internet-Kopfzeilen einer E-Mail in Microsoft Outlook anzuzeigen, ist der Einsatz von Visual Basic for Applications (VBA) eine effektive Methode. VBA bietet eine leistungsfähige Plattform zur Automatisierung von Aufgaben in Microsoft Office-Anwendungen, einschließlich Outlook. In diesem speziellen Fall können wir VBA nutzen, um ein benutzerdefiniertes Skript zu erstellen, das die verborgenen Details einer E-Mail, die sogenannten Internet-Kopfzeilen, extrahiert und anzeigt.

Internet-Kopfzeilen enthalten wichtige Informationen über den Weg, den eine E-Mail im Internet zurückgelegt hat, einschließlich der Server, durch die sie geleitet wurde, und der IP-Adressen, die beteiligt waren. Diese Informationen können nützlich sein, um Probleme mit der E-Mail-Zustellung zu diagnostizieren, die Authentizität von Nachrichten zu überprüfen oder einfach mehr über die technischen Aspekte der E-Mail-Kommunikation zu erfahren.

Um in Outlook die Internet-Kopfzeilen von Nachrichten mit VBA anzuzeigen, können wir ein Makro erstellen, das die Kopfzeilen der ausgewählten E-Mail anzeigt. Hier sind die Schritte, um dies zu erreichen:

  • Outlook öffnen: Starten Sie Microsoft Outlook.
  • VBA-Editor öffnen: Drücken Sie Alt + F11, um den VBA-Editor zu öffnen.
  • Neues Modul hinzufügen: Im VBA-Editor gehen Sie zu Einfügen > Modul, um ein neues Modul hinzuzufügen.
  • VBA-Code schreiben: Kopieren Sie den folgenden Code in das neue Modul:

Sub ShowInternetHeaders()
Dim Inspectors As Outlook.Inspectors
Dim Mail As Outlook.MailItem

Set Inspectors = Application.Inspectors

If Application.ActiveExplorer.Selection.Count > 0 Then
If TypeOf Application.ActiveExplorer.Selection.Item(1) Is Outlook.MailItem Then
Set Mail = Application.ActiveExplorer.Selection.Item(1)
Dim InternetHeaders As String
InternetHeaders = Mail.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x007D001E")
MsgBox InternetHeaders, vbOKOnly, "Internet-Kopfzeilen"
Else
MsgBox "Bitte wählen Sie eine E-Mail aus."
End If
Else
MsgBox "Bitte wählen Sie eine E-Mail aus."
End If
End Sub

Dieser Code prüft, ob eine E-Mail ausgewählt ist, und zeigt dann die Internet-Kopfzeilen dieser E-Mail in einer Nachrichtenbox an.

  • Makro ausführen: Wechseln Sie zurück zu Outlook, wählen Sie eine E-Mail aus und drücken Sie Alt + F8, wählen Sie ShowInternetHeaders und klicken Sie auf Ausführen.
  • Sicherheitseinstellungen: Beachten Sie, dass Outlook Makros aus Sicherheitsgründen deaktivieren kann. Möglicherweise müssen Sie die Makroeinstellungen anpassen, um das Makro auszuführen. Gehen Sie zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center > Makroeinstellungen und wählen Sie eine geeignete Option.

Als Textdatei abspeichern

Dieses VBA-Skript ist speziell für die Verwendung in Microsoft Outlook konzipiert. Sein Hauptzweck ist es, die Internet-Kopfzeilen einer ausgewählten E-Mail zu extrahieren, diese in eine Textdatei zu schreiben und die Datei anschließend automatisch in Notepad zu öffnen. Diese Funktionalität ist besonders nützlich für Benutzer, die detaillierte Informationen über die technischen Aspekte eingehender E-Mails benötigen, wie beispielsweise die Pfadverfolgung der E-Mail-Übermittlung, Server-Authentifizierungen und andere diagnostische Informationen, die in den Kopfzeilen enthalten sind.

Das Skript setzt voraus, dass der Benutzer eine E-Mail in Outlook ausgewählt hat, bevor es ausgeführt wird. Nach der Ausführung extrahiert das Skript die Internet-Kopfzeilen der ausgewählten E-Mail mithilfe von Outlooks eingebautem PropertyAccessor-Objekt. Diese Kopfzeilen werden dann in einer temporären Textdatei im Windows TEMP-Verzeichnis gespeichert. Nach dem Speichern der Kopfzeilen öffnet das Skript die Textdatei in Notepad, sodass der Benutzer die Informationen leicht einsehen und analysieren kann.

Sub SaveHeadersAndOpenInNotepad()
Dim mail As Outlook.MailItem
Dim filePath As String
Dim fileNo As Integer

If Application.ActiveExplorer.Selection.Count > 0 Then
If TypeOf Application.ActiveExplorer.Selection.Item(1) Is Outlook.MailItem Then
Set mail = Application.ActiveExplorer.Selection.Item(1)
filePath = Environ("TEMP") & "\EmailHeaders.txt"
fileNo = FreeFile

Open filePath For Output As #fileNo
Print #fileNo, mail.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x007D001E")
Close #fileNo

Shell "notepad.exe " & filePath, vbNormalFocus
Else
MsgBox "Bitte wählen Sie eine E-Mail aus."
End If
Else
MsgBox "Bitte wählen Sie eine E-Mail aus."
End If
End Sub

Bestimmte Werte aus der Kopfzeile abrufen

Um bestimmte Werte aus der Kopfzeile einer E-Mail in Outlook mittels VBA und RegEx (Regular Expressions) zu extrahieren, können wir das vorherige Makro erweitern. In diesem Beispiel fokussieren wir uns darauf, die Adresse im Return-Path zu extrahieren. Falls Sie mehrere Werte benötigen, können wir eine Select Case-Anweisung einsetzen, um durch den Header zu iterieren und die gewünschten Informationen zu erhalten.

Hier ist ein angepasster VBA-Code:

  • Fügen Sie zuerst eine Referenz zur RegEx-Bibliothek hinzu:
    • Im VBA-Editor, gehen Sie zu Extras > Verweise.
    • Setzen Sie ein Häkchen bei Microsoft VBScript Regular Expressions 5.5 und klicken Sie auf OK.
  • Ändern Sie das Makro wie folgt:

 

Sub ExtractSpecificHeaderInfo()
Dim mail As Outlook.MailItem
Dim headers As String
Dim regex As RegExp
Dim matches As MatchCollection
Dim match As Match

If Application.ActiveExplorer.Selection.Count > 0 Then
If TypeOf Application.ActiveExplorer.Selection.Item(1) Is Outlook.MailItem Then
Set mail = Application.ActiveExplorer.Selection.Item(1)
headers = mail.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x007D001E")

Set regex = New RegExp
With regex
.IgnoreCase = True
.Global = False
.Pattern = "Return-Path: ([^\r\n]+)"
End With

If regex.Test(headers) Then
Set matches = regex.Execute(headers)
For Each match In matches
' Hier können Sie mit der gefundenen Information arbeiten
MsgBox "Return-Path: " & match.SubMatches(0)
Next match
Else
MsgBox "Return-Path nicht gefunden."
End If
Else
MsgBox "Bitte wählen Sie eine E-Mail aus."
End If
Else
MsgBox "Bitte wählen Sie eine E-Mail aus."
End If
End Sub

  • In diesem Skript wird RegEx verwendet, um nach dem Muster für Return-Path zu suchen und den entsprechenden Wert zu extrahieren. Sie können das Muster im .Pattern-Eigenschaft des RegExp-Objekts anpassen, um andere Werte zu extrahieren.
  • Führen Sie das Makro aus: Wählen Sie in Outlook eine E-Mail aus und führen Sie das Makro wie zuvor beschrieben aus.

Wenn Sie mehrere Werte benötigen, können Sie die For Each match In matches-Schleife erweitern, um verschiedene Fälle mit Select Case zu behandeln, basierend auf dem, was Sie im Header suchen. Beachten Sie, dass die Verwendung von RegEx erfordert, dass Sie die Muster genau kennen, nach denen Sie suchen möchten.

-

Vorheriger Artikel Nächster Artikel

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

CAPTCHA eingeben * Das Zeitlimit ist erschöpft. Bitte CAPTCHA neu laden.