2012-09-04 5 views
8

Ich muss die Anhänge von einer E-Mail-Nachricht abrufen und speichern, aber mit dem folgenden Code werden alle Anhänge zurückgegeben. Das bedeutet, dass die eingebetteten Bilder wie die Signatur des Absenders mit einem Logo zurückgegeben werden. Wie kann ich eine True Attachment vs. eingebettete Bilder unterscheiden? Ich habe viel von Foren gesehen, aber es ist mir immer noch unklar.vsto + Anhänge unterscheiden

public static void SaveData(MailItem currentMailItem) 
{ 
    if (currentMailItem != null) 
    {  
     if (currentMailItem.Attachments.Count > 0) 
     { 
      for (int i = 1; i <= currentMailItem.Attachments.Count; i++) 
      { 
       currentMailItem.Attachments[i].SaveAsFile(@"C:\TestFileSave\" + currentMailItem.Attachments[i].FileName); 
      } 
     } 
    } 
} 

Antwort

8

können Sie prüfen, ob eine Anlage inline ist oder nicht, indem die folgenden pseudo-code from MS Technet Forums verwenden.

if body format is plain text then 
    no attachment is inline 
else if body format is RTF then 
    if PR_ATTACH_METHOD value is 6 (ATTACH_OLE) then 
    attachment is inline 
    else 
    attachment is normal 
else if body format is HTML then 
    if PR_ATTACH_FLAGS value has the 4 bit set (ATT_MHTML_REF) then 
    attachment is inline 
    else 
    attachment is normal 

können Sie die Format Nachrichtentext zugreifenMailItem.BodyFormat und die Eigenschaften MIME-Anhang mitAttachment.PropertyAccessor verwenden.

+1

Vielen Dank! Es klappt! – Liz