Benutzer mit den meisten Antworten
Mail Anhänge unterscheiden

Frage
-
Hallo Experten,
Mails sollen in einer DB abgelegt werden, wobei die Attachments ebenfalls als getrennte Dokumente abgelegt werden sollen.
Die Attachments aus der Mail zu separieren ist kein Problem. Aber, wenn im Mailtext jemand ein z.B. ein Bild(in der Regel ein Firmenlogo in der Signatur) einfügt und gleichzeitig z.B. ein Bild als Anhang einfügt stehen beide als Attachment in der Mail. Wie kann ich nun das eine vom anderem unterscheiden?
Dim mailAttachments As Outlook.Attachments = oODoc.Attachments If Not IsNothing(mailAttachments) Then For i As Integer = 1 To mailAttachments.Count Dim currentAttachment As Outlook.Attachment = mailAttachments.Item(i) If Not IsNothing(currentAttachment) Then ... End If Next Marshal.ReleaseComObject(mailAttachments) End If End If
Antworten
-
Servus Stefan,
gelesen, aber die Art die dort beschrieben wird scheint mir ein wenig, sagen wir mal, umständlich. Aber, da lag die Spur zum Erfolg drin. Ich habe das ganz jetzt mit einer Funktion gelöst(ob diese alle Varianten abdeckt muss ich noch feststellen):
Public Function Mailattachment_isEmbedded(attachment As Outlook.Attachment) As Boolean 'Nicht vergessen: Imports Microsoft.Office.Interop If attachment.Type <> Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue Then Return True End If Dim iPropertyTemp As Integer = attachment.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x37050003") If iPropertyTemp = 6 Then Return True End If iPropertyTemp = attachment.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x37140003") If iPropertyTemp = 4 Then Return True End If Return False End Function
Der folge Code zeigt den Aufruf und Auswertung:
If Not Mailattachment_isEmbedded(xAttachment) Then 'Ist ein Attachment Else 'Ist kein Attachment sondern ein Objekt im Mailbody bzw. Mailtext End If
mfg m.m.w.
PS: Wollte noch eine Link einfügen wurde aber vom System verweigert !?!?!?!?
Alle Antworten
-
Hi,
die Attachment Klasse von Outlook hat ja verschiedene Eigenschaften, bspw. Index, DisplayName, usw. Darüber kannst Du doch eine Unterscheidung vornehmen!?
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Servus Stefan,
tja auf die Idee bin ich auch schon gekommen aber leider konnte ich nicht ein Merkmal finden was das eine vom anderem unterscheidet.
Ein Unterscheidung von Index oder Name ist nicht Zielführend. Da der Index abhängig ist in welcher Reihenfolge das Bild in der Mail oder das Bild im Anhang ein- bzw. angefügt wurde. Auch der Name hilft nicht, wie auch, beide Attachments haben eine Bezeichnung, das sagt aber nichts darüber aus ob es sich um einen echten Anhang handelt oder um einen der im Mailtext eingefügt wurde.
mfg m.m.
-
Hi,
dann hatte ich das falsch verstanden.
Du willst also Inline Attachments von "normalen" Attachments unterscheiden?
Lies dich bitte mal in diesen SO Thread ein:
Accessing inline and bar attachments
In HTML Mails sind Inline Attachments oftmals im HTML Code mit einer Referenz im Format cid:<Name> enthalten.
Andere Optionen findest Du im o.g. Thread.
Wenn das nicht hilft, wüsste ich leider auch nichts.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Servus Stefan,
gelesen, aber die Art die dort beschrieben wird scheint mir ein wenig, sagen wir mal, umständlich. Aber, da lag die Spur zum Erfolg drin. Ich habe das ganz jetzt mit einer Funktion gelöst(ob diese alle Varianten abdeckt muss ich noch feststellen):
Public Function Mailattachment_isEmbedded(attachment As Outlook.Attachment) As Boolean 'Nicht vergessen: Imports Microsoft.Office.Interop If attachment.Type <> Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue Then Return True End If Dim iPropertyTemp As Integer = attachment.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x37050003") If iPropertyTemp = 6 Then Return True End If iPropertyTemp = attachment.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x37140003") If iPropertyTemp = 4 Then Return True End If Return False End Function
Der folge Code zeigt den Aufruf und Auswertung:
If Not Mailattachment_isEmbedded(xAttachment) Then 'Ist ein Attachment Else 'Ist kein Attachment sondern ein Objekt im Mailbody bzw. Mailtext End If
mfg m.m.w.
PS: Wollte noch eine Link einfügen wurde aber vom System verweigert !?!?!?!?