我目前正在編程一個插件到Outlook 2007,當我試圖序列化一個附件時遇到了一個問題。儘管System.Net.Mail附件具有可用於序列化數據的ContentStream,但Microsoft.Office.Interop.Outlook附件不包含。不幸的是,我可以直接從Outlook獲得的唯一附件類型是Microsoft.Office.Interop.Outlook。我搜索了一下,並沒有找到類似的東西。轉換Microsoft.Office.Interop.Outlook.Attachment到System.Net.Mail.Attachment在c#
MailItem item = getMailObj(e);
String dataSend = serializeAttachment((System.Net.Mail.Attachment)item.Attachments[1]);
正如你可以看到,我試圖類型轉換的初始附接,但我被賦予了無效的轉換異常:
無法轉換類型 「系統.__ ComObject」的COM對象類類型 'System.Net.Mail.Attachment'。 代表COM 組件的類型實例不能轉換爲不代表COM組件的類型 ; 然而只要底層COM 組件支持QueryInterface 調用接口的IID,它們就可以轉換爲接口 。
我也不能就這麼把
System.Net.Mail.Attachment newAtt = item.Attachments[1];
截至2010年的VisualStudio只是告訴我,類型轉換它。對於如何解決這個問題,有任何的建議嗎?
我已經試過這樣做,但不幸的是附件的Microsoft版本不具有ContentStream對我來說,信息轉移到附件的網絡版本。我可以傳輸的唯一屬性是文件名,大小和類型。 – Saynes 2011-04-05 16:01:34
您可以使用GetTemporaryFilePath()http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.attachment.gettemporaryfilepath.aspx或SaveAsFile()http://msdn.microsoft.com/ zh-cn/library/microsoft.office.interop.outlook.attachment.saveasfile.aspx方法來獲取Outlook附件的內容。 – STO 2011-04-05 18:28:07
我嘗試過使用GetTemporaryFilePath(),但當我嘗試使用它時出現以下錯誤'無法在臨時文件夾中訪問此附件。在附件事件中使用此方法來獲取臨時文件路徑。'我也不想用SaveAsFile()保存文件。 – Saynes 2011-04-07 16:46:23