2015-09-09 3 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

Вы должны получить correspoding прикрепленный файл изображения с '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, то, конечно, коллекция вложений не будет иметь их - они существуют только на удаленном сервере. Вам необходимо обработать свойство HTMLBody и удалить теги img, которые вы не хотите. –

Смежные вопросы