2015-09-09 65 views
1

要求是從Outlook電子郵件中刪除附件。下面是代碼:(!怪)從Outlook中刪除嵌入圖像

internal void ClearAttachments() 
    { 
     Outlook.MailItem mailItem = Globals.ThisAddin.Application.ActiveInspector().CurrentItem as MailItem; 
     try 
     { 
      if (mailItem != null && mailItem.Attachments.Count >= 1) 
      { 
       for (int i = mailItem.Attachments.Count; i >= 1; i--) 
       { 
        mailItem.Attachments[i].Delete(); 
        mailItem.Attachments.Remove(i); 
       } 
      } 
     } 
     catch (Exception e) 
     { 
      //log this if needed. 
     } 

它適用於最常用的文件完全沒有問題,除了「內嵌圖像」它不識別它們作爲附件,如果我有不到3直列圖像,但工作正常如果我在這種情況下有內嵌圖像和其他文件(例如txt),則在刪除圖像時,Outlook仍會顯示矩形塊(某種容器)。

+0

如何在HTML標記中表示附件?它們是使用'cid:'attribite還是64位編碼引用的? –

+0

mailItem.HTMLBody屬性表明以下幾點: 的

+0

你需要得到把對應的影像文件附用'PR_ATTACH_CONTENT_ID'(「HTTP://模式.microsoft.com/mapi/proptag/0x3712001E「)設置爲[email protected],如HTML標記所示。 –

回答

0

矩形塊由HTML主體顯示,該主體現在指向不再存在的圖像。您還需要適當地更新MailItem.HTMLBody屬性。

+0

感謝您的快速回復,但是當有內嵌圖像時,mailItem.Attachments不會反映它們。如果我有3個內嵌圖像,mailItem.Attachments.Count仍爲0. –

+0

如果圖像是由遠程url而不是cid屬性引用的,當然Attachments集合將不具有它們 - 它們只存在於遠程服務器上。您將需要處理HTMLBody屬性並刪除不需要的img標籤。 –