Преобразование Microsoft.Office.Interop.Outlook.Attachment в System.Net.Mail.Attachment в c # - PullRequest
1 голос
/ 31 марта 2011

В настоящее время я программирую дополнение к Outlook 2007 и столкнулся с проблемой при попытке сериализации вложения.Хотя вложения System.Net.Mail имеют ContentStream, который я могу использовать для сериализации данных, вложения Microsoft.Office.Interop.Outlook нет.К сожалению, единственный тип вложения, который я могу получить непосредственно из Outlook, - это Microsoft.Office.Interop.Outlook.Я немного обыскал и не смог найти ничего похожего.

MailItem item = getMailObj(e);    
String dataSend = serializeAttachment((System.Net.Mail.Attachment)item.Attachments[1]);

Как вы можете видеть, я попытался типизировать начальное вложение, но мне было дано исключение Invalid Cast:

Невозможно привести объект COM типа 'System .__ ComObject' к типу класса 'System.Net.Mail.Attachment'.Экземпляры типов, которые представляют компоненты COM, не могут быть преобразованы в типы, которые не представляют компоненты COM;однако они могут быть преобразованы в интерфейсы, если базовый компонент COM поддерживает вызовы QueryInterface для IID интерфейса.

Я также не могу просто указать

System.Net.Mail.Attachment newAtt = item.Attachments[1];

Как VisualStudio 2010просто говорит мне, чтобы я его набрал.Любые предложения о том, как это исправить?

Ответы [ 2 ]

1 голос
/ 31 марта 2011

Я не думаю, что типы могут быть преобразованы или преобразованы.Просто прочитайте содержимое вложения Outlook и запишите его в Mail.Attachment.

0 голосов
/ 07 июня 2016

Я попробовал этот код, и он работает:

htmbody = "<HTML><BODY>"
htmbody = htmbody + "<table border=0>"
htmbody = htmbody + "<tr>"
htmbody = htmbody + "<td><img src=C:\temp\filename\place.png></td>"
...