Unterscheidung eingebundene und angehängte Anlagen
Hallo,
gibt es eine Möglichkeit, Anlagen einer E-Mail daraufhin zu überprüfen, ob diese bereits im Mailkörper "eingebunden" verwendet wurden (z.B. als Logo in einer Signatur) oder ob diese Anlage "völlig getrennt" vom Mailkörper ist?
Hintergrund:
Ich möchte eingehende E-Mails drucken, speichere dazu die Mail und die Anlagen getrennt ab. "Eingebundene" Anlagen werden bis dato wie einfach angefügte Dateien behandelt.
Mit diesem Code speichere ich die Anlagen bis jetzt ab:
Neugierige Grüße,
Andreas
(Outlook 2010, VB2010Express)
gibt es eine Möglichkeit, Anlagen einer E-Mail daraufhin zu überprüfen, ob diese bereits im Mailkörper "eingebunden" verwendet wurden (z.B. als Logo in einer Signatur) oder ob diese Anlage "völlig getrennt" vom Mailkörper ist?
Hintergrund:
Ich möchte eingehende E-Mails drucken, speichere dazu die Mail und die Anlagen getrennt ab. "Eingebundene" Anlagen werden bis dato wie einfach angefügte Dateien behandelt.
Mit diesem Code speichere ich die Anlagen bis jetzt ab:
...
For i = 1 To intAnlagen 'Anlagen im vordefinierten Verzeichnis sichern
objNewMailItem.Attachments.Item(i).SaveAsFile(strMailSpeicherBenennung & "_" & .Attachments.Item(i).FileName)
Next i
...
Neugierige Grüße,
Andreas
(Outlook 2010, VB2010Express)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 213519
Url: https://administrator.de/forum/unterscheidung-eingebundene-und-angehaengte-anlagen-213519.html
Ausgedruckt am: 08.04.2025 um 16:04 Uhr
8 Kommentare
Neuester Kommentar
Hallo Andreas,
sieh dir diesen Thread mal an, da hatte ich schon eine Lösung dafür präsentiert, jedoch mit einem kostenpflichtigen Plugin.
Grüße @colinardo
sieh dir diesen Thread mal an, da hatte ich schon eine Lösung dafür präsentiert, jedoch mit einem kostenpflichtigen Plugin.
Grüße @colinardo
Nun, man könnte die Attachments identifizieren indem man den HTML-Body auf das vorkommen des Attachment-Filenames prüft. Ist dieser im Body vorhanden sollte es ein Inline-Attachment sein:
Beispiel: (Das MailItem musst du natürlich noch zuweisen)
Wenn der Nutzer aber den Dateinamen im Mailtext erwähnt, klappt diese Variante nicht. Hier müsste man dann via Regular Expressions den Inhalt genauer prüfen um z.B. Bilder-Tags (<img.../>) auszufiltern.
Grüße @colinardo
Beispiel: (Das MailItem musst du natürlich noch zuweisen)
Dim itm As MailItem
set itm = ........
Dim att As Attachment
For Each att In itm.Attachments
If InStr(1, itm.HTMLBody, att.FileName, vbTextCompare) > 0 Then
'Attachment wird im Body verwendet
Debug.Print "'" & att.FileName & "' ist ein Inline Attachment!"
else
'Attachment ist ein richtiger Anhang
debug.print "'" att.Filename & "' ist ein richtiges Attachment"
End If
Next
Wenn der Nutzer aber den Dateinamen im Mailtext erwähnt, klappt diese Variante nicht. Hier müsste man dann via Regular Expressions den Inhalt genauer prüfen um z.B. Bilder-Tags (<img.../>) auszufiltern.
Grüße @colinardo
(nur zur Info das oben war nur VBA zum testen in Outlook)
Die Überprüfung setzt auf den HTML-Code der Mail, da in diesem der Name des Inline-Attachments auftaucht wenn es denn eins ist, du musst also zum überprüfen diesen vorhalten. Mach die Überprüfung vor der Speicherung und verfrachte dort die Attachments in die passenden Ordner.
Grüße Uwe
Die Überprüfung setzt auf den HTML-Code der Mail, da in diesem der Name des Inline-Attachments auftaucht wenn es denn eins ist, du musst also zum überprüfen diesen vorhalten. Mach die Überprüfung vor der Speicherung und verfrachte dort die Attachments in die passenden Ordner.
Grüße Uwe
Zitat von @ahstax:
Mir ist da noch was eingefallen.
In der eigentlichen Mail werden als Anlage ja nur diejenigen Anlagen genannt, die "tatsächlich" Anlagen sind. Ist
Outlook selbst "klever" genug, um das unterscheiden zu können? Ich nehme mal an, dass man das nicht nutzen kann,
sonst müsste man vermutlich den "Umweg" über das oben beschriebene Vorgehen nicht wählen...?
Diese Funktion stellt Outlook den Nutzern leider nicht via Code zur Verfügung...Mir ist da noch was eingefallen.
In der eigentlichen Mail werden als Anlage ja nur diejenigen Anlagen genannt, die "tatsächlich" Anlagen sind. Ist
Outlook selbst "klever" genug, um das unterscheiden zu können? Ich nehme mal an, dass man das nicht nutzen kann,
sonst müsste man vermutlich den "Umweg" über das oben beschriebene Vorgehen nicht wählen...?