ahstax
Goto Top

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:

...
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)

Content-Key: 213519

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

Printed on: April 24, 2024 at 04:04 o'clock

Member: colinardo
colinardo Aug 06, 2013 at 13:27:01 (UTC)
Goto Top
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
Member: ahstax
ahstax Aug 06, 2013 at 14:03:36 (UTC)
Goto Top
Hallo colinario,

Danke für Deinen Tipp, ich werde mit das ansehen.

Gibt es vielleicht auch eine kostenfreie Möglichkeit?

Grüße,
Andreas
Member: colinardo
colinardo Aug 06, 2013 updated at 14:31:09 (UTC)
Goto Top
Zitat von @ahstax:
Gibt es vielleicht auch eine kostenfreie Möglichkeit?
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)
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
Member: ahstax
ahstax Aug 07, 2013 at 14:00:45 (UTC)
Goto Top
Hallo colinardo,

immer wieder begeistert! face-wink

Funktioniert so etwas auch mit einem Word-Dokument? Im Moment speicher ich die E-Mail, zu der die fraglichen Anlagen gehören, als olDoc ab...
Allerdings wäre ein Abspeichern sowohl als HTML als auch als olDoc auch möglich mit anschließender Prüfung und "Ausschluss"...

Grüße,
Andreas
Member: colinardo
colinardo Aug 07, 2013 updated at 14:17:25 (UTC)
Goto Top
(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
Member: ahstax
ahstax Aug 09, 2013 at 06:52:41 (UTC)
Goto Top
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...?
Member: colinardo
colinardo Aug 09, 2013 at 10:21:19 (UTC)
Goto Top
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...
Member: ahstax
ahstax Nov 28, 2013 at 15:14:24 (UTC)
Goto Top
Ich hab da mal noch was gefunden...:
KLICK

ist dann bei mir so geworden:

...
Dim value1 As String = .Attachments.item(i).PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001E")  
Dim value2 As Long = .Attachments.item(i).PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x37140003")  
 
   If (Not (value1) Is Nothing) Then
      If (Not (value2) = 4) Then
          '  "echter" Anhang  
...


Allen beteiligten herzlichen Dank!!!