2012-09-04 28 views
8

Potrzebuję pobrać i zapisać załączniki z elementu poczty, ale użycie poniższego kodu zwróci wszystkie załączniki - co oznacza, że ​​zwraca również osadzone obrazy, takie jak podpis nadawcy z logo, które jest obrazem. Jak mogę odróżnić prawdziwe przywiązanie od osadzonych obrazów? Wiele widziałem na forach, ale wciąż jest dla mnie niejasna.vsto + rozróżnianie załączników

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); 
      } 
     } 
    } 
} 

Odpowiedz

8

Można sprawdzić, czy załącznik jest inline lub nie stosując następujące pseudo-code from MS Technet Forums.

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 

Możesz uzyskać dostęp do wiadomość formatu ciała korzystając MailItem.BodyFormat i właściwości załączników MIME użyciu Attachment.PropertyAccessor.

string PR_ATTACH_METHOD = 'http://schemas.microsoft.com/mapi/proptag/0x37050003'; 
var attachMethod = attachment.PropertyAccessor.Get(PR_ATTACH_METHOD); 

string PR_ATTACH_FLAGS = 'http://schemas.microsoft.com/mapi/proptag/0x37140003'; 
var attachFlags = attachment.PropertyAccessor.Get(PR_ATTACH_FLAGS); 
+1

dziękuję bardzo! to działa! – Liz

Powiązane problemy