Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Mail Delivery Error - Schluss mit einzeln rauskopieren

Anleitung Entwicklung VB for Applications

Mitglied: d4shoerncheN

d4shoerncheN (Level 2) - Jetzt verbinden

02.08.2013 um 10:19 Uhr, 4262 Aufrufe, 1 Kommentar, 5 Danke

Outlook 2010

Liebe Kollegen,

ich hoffe das mit dieser Anleitung auch einige Leute etwas anfangen können. Wir betreiben ein Newsletter-System welches regelmäßig verwendet wird. Hin und wieder kommt es vor (aus Altbeständen) das einige Adressen nicht mehr gültig sind und mit einer Mail Delivery Error Meldung zurück kommen. Je nach Anzahl kann dies sehr mühselig sein alle E-Mail Adressen rauszukopieren und zu analysieren.

Vor diesem Problem stand ich und möchte mich recht Herzlich bei @colinardo bedanken, der mir die Lösung präsentierte. Hierbei werden alle E-Mails überprüft und die in der Fehlermeldung erhaltenen E-Mailadressen in eine separate Textdatei gespeichert.

1. Öffnet Outlook 2010
2. Verschiebt die Mail Delivery Error Meldungen in einen seperaten Ordner, am besten in das Root-Verzeichnis
3. Mit ALT + F11 könnt Ihr den VBA Editor öffnen
4. Hier bei Projekt 1 bis zur ThisOutlookSession durchklicken und nachfolgenden Code einfügen

01.
Sub parseMails() 
02.
    Const FILEPATH = "###1###" 
03.
     
04.
    Set myRegExp = CreateObject("vbscript.regexp") 
05.
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
06.
    Dim fldr As Folder 
07.
    Set fldr = Application.Session.Stores.Item("###2###").GetRootFolder.Folders("###3###") 
08.
    Set objTextFile = objFSO.CreateTextFile(FILEPATH, True) 
09.
    myRegExp.IgnoreCase = True 
10.
    myRegExp.Pattern = "([A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6})" 
11.
     
12.
    For i = 1 To fldr.Items.Count 
13.
            strBody = fldr.Items(i).Body 
14.
            Set myMatches = myRegExp.Execute(strBody) 
15.
            If myMatches.Count >= 1 Then 
16.
                For Each myMatch In myMatches 
17.
                    If myMatch.SubMatches.Count >= 1 Then 
18.
                        strEMail = myMatch.SubMatches(0) 
19.
                        objTextFile.WriteLine (strEMail) 
20.
                    End If 
21.
                Next 
22.
            End If 
23.
    Next 
24.
 
25.
    objTextFile.Close 
26.
    MsgBox "Verarbeitung abgeschlossen !" & vbNewLine & "Die Datei mit den extrahierten E-Mail-Adressen liegt hier: " & FILEPATH 
27.
    Set myRegExp = Nothing 
28.
    Set objFSO = Nothing 
29.
End Sub
###1### Hier fügt Ihr den Pfad und den Dateinamen ein, wo die Datei abgespeichert werden soll. Bei mir gab es kleine Probleme mit Laufwerk C, somit habe ich es auf D:\emails.txt geändert.

###2### Hier der Name des Root-Knoten (Stores) Eures Profils. Bei mir war es meine E-Mail Adresse.

###3### Hier den Namen des Ordners eintragen, indem Eure Meldungen liegen.

5.Script ausführen.

Hier der komplette Beitrag:
http://www.administrator.de/content/detail.php?id=213100#comment-860454

Gruß
@d4shoerncheN
Mitglied: colinardo
02.08.2013, aktualisiert um 11:35 Uhr
Hi @d4shoerncheN,
danke für deine Anleitung. Zu erwähnen sei noch, dass das obige Script nur die erste E-Mail-Adresse im Body der Mail extrahiert.
Ergänzend zum obigen Script hier noch eine Variante mit der man festlegen kann an welcher Position die Mail-Adresse extrahiert werden soll:
An Position ###4### trägt man dann die Position der E-Mail-Adresse als Zahl ein.
Beispiel: Wenn im NDR-Report die gewünschte Mail-Adresse erst die dritte genannte Mail-Adresse vom Anfang aus gesehen ist trägt man hier eine 3 ein.
01.
Sub parseMails() 
02.
    Const FILEPATH = "###1###" 
03.
     
04.
    Set myRegExp = CreateObject("vbscript.regexp") 
05.
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
06.
    Dim fldr As Folder 
07.
    Set fldr = Application.Session.Stores.Item("###2###").GetRootFolder.Folders("###3###") 
08.
    Set objTextFile = objFSO.CreateTextFile(FILEPATH, True) 
09.
    myRegExp.Global = True 
10.
    myRegExp.IgnoreCase = True 
11.
    myRegExp.Pattern = "([A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6})" 
12.
     
13.
    For i = 1 To fldr.Items.Count 
14.
            strBody = fldr.Items(i).Body 
15.
            Set myMatches = myRegExp.Execute(strBody) 
16.
           If myMatches.Count > 1 Then 
17.
                intPosition = ###4### 
18.
                If myMatches(intPosition - 1).SubMatches.Count >= 1 Then 
19.
                    strEMail = myMatches(intPosition - 1).SubMatches(0) 
20.
                    objTextFile.WriteLine (strEMail) 
21.
                End If 
22.
           End If 
23.
    Next 
24.
    objTextFile.Close 
25.
    MsgBox "Verarbeitung abgeschlossen !" & vbNewLine & "Die Datei mit den extrahierten E-Mail-Adressen liegt hier: " & FILEPATH 
26.
    Set myRegExp = Nothing 
27.
    Set objFSO = Nothing 
28.
End Sub
Grüße Uwe
Bitte warten ..
Ähnliche Inhalte
E-Mail
Fake E-Mail in Outlook für Demonstartionszwecke (12)

Frage von sascha382 zum Thema E-Mail ...

Microsoft Office
Outlook Automation Mail-Element löschen

Frage von TestsubjektX zum Thema Microsoft Office ...

Exchange Server
gelöst E-Mail Versand nicht möglich - Providerwechsel (6)

Frage von Campino86 zum Thema Exchange Server ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Windows Server

Exchange 2010 Active Directory und Windows Server 2016

(4)

Erfahrungsbericht von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Internet
gelöst Mitarbeiter surft auf unerwünschter Seite - Wie damit umgehen? (52)

Frage von sabines zum Thema Internet ...

Netzwerke
LAN2LAN Verbindung sehr langsam flaschenhals gesucht (27)

Frage von PixL86 zum Thema Netzwerke ...

Router & Routing
PFsense - Netzverbindung steht, aber kein Internet vorhanden (24)

Frage von aschmid zum Thema Router & Routing ...

Windows Server
gelöst Windows 2016 Hyper-V und VHDS (19)

Frage von emeriks zum Thema Windows Server ...