2012-09-04 25 views
8

Ekleri (postaları) bir posta öğesinden almam ve kaydetmem gerekiyor, ancak aşağıdaki kodu kullanarak tüm ekleri döndürür - bu, resmin imzası olan bir logo ile gönderenin imzası gibi gömülü görüntüleri de döndürür. gerçek eki vs gömülü görüntüler arasındaki farkı nasıl ayırt edebilirim? Forumlardan çok şey gördüm ama hala bana açık değil.vsto + eklentileri farklılaştır

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

cevap

8

Bir ek satır içi veya olmasın, aşağıdaki pseudo-code from MS Technet Forums kullanarak olup olmadığını kontrol edebilirsiniz.

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 

Sen Attachment.PropertyAccessor kullanarak MailItem.BodyFormat kullanılarak ileti gövdesi biçimini ve MIME eki özelliklerini erişebilirsiniz.

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

Çok teşekkürler! işe yarıyor! – Liz