将Microsoft.Office.Interop.Outlook.Attachment转换为c#中的System.Net.Mail.Attachment

时间:2011-03-31 17:35:57

标签: c# casting outlook-addin outlook-2007 email-attachments

我正在编写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]);

正如你所看到的,我尝试了对初始附件进行类型转换,但是我得到了一个无效的强制转换异常:

  

无法转换类型的COM对象   'System .__ ComObject'到类类型   'System.Net.Mail.Attachment'。   表示COM的类型的实例   组件无法转换为类型   不代表COM组件;   但是它们可以转换为接口   只要底层的COM   component支持QueryInterface   要求接口的IID。

我也不能只是把

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

因为VisualStudio 2010只是告诉我对它进行类型转换。有关如何解决此问题的任何建议吗?

2 个答案:

答案 0 :(得分:1)

我不认为类型可以被转换或转换。只需阅读Outlook附件的内容并将其写入Mail.Attachment。

答案 1 :(得分:-4)

我尝试了这段代码并且有效:

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