2016-08-29 81 views
1

我已經創建了一個使用Winform發送電子郵件的表單。我的Outlook 2010窗口打開並正常工作。然而,我的朋友的機器上,它不工作,因爲他有展望2013年是否有可能創建一個發送郵件,這將在兩個Outlook 2010和2013年的工作,下面是我使用的代碼:使用Outlook 2010和2013實現從winform發送郵件C#

var outlookApp = new Outlook.Application(); 

Outlook.MailItem mailItem = outlookApp.CreateItem(Outlook.OlItemType.olMailItem); 

mailItem.Subject = this.txtTitle.Text; 
mailItem.HTMLBody = this.HtmlText; 
mailItem.HTMLBody = mailItem.HTMLBody + ReadSignature(); 
mailItem.Importance = Outlook.OlImportance.olImportanceLow; 
mailItem.Display(true); 

此外,COM我使用是的Microsoft Outlook 14.0對象,我知道對於Outlook 2013年是的Microsoft Outlook 15.0對象

+0

您可以[發送電子郵件](HTML格式)(http://stackoverflow.com/a/32767496/3110834)幷包含一些圖像。有什麼要求可以讓你使用outlook interop發送電子郵件? –

+0

原因是因爲從winform我必須根據用戶從表單直接設置圖像和標題。此外,我需要通過Outlook發送郵件,因爲我需要使用公司電子郵件地址等。 –

+0

所有這些都可以使用['SmtpClient'](https://msdn.microsoft.com/en-us/library/system.net.mail.smtpclient(v = vs.110).aspx)完成,沒有任何問題。看看我在第一評論或[這一個](http://stackoverflow.com/a/36926380/3110834)中分享的[鏈接](http://stackoverflow.com/a/32767496/3110834)。 –

回答

1

如果你想擁有的版本獨立性,您添加到所需的辦公室互操作的參考之後組裝,例如Microsoft.Office.Interop.Outlook.dll,右鍵單擊dll引用並選擇屬性,然後在屬性網格中,將Embed Interop Types設置爲true

更多信息:

Walkthrough: Embedding Type Information from Microsoft Office Assemblies in Visual Studio

如果嵌入在引用COM 對象的應用程序類型信息,可以消除對主互組件 (PIA)的需要。此外,嵌入式類型信息使您能夠爲您的應用程序實現版本獨立性。也就是說,您可以編寫程序 以使用來自多個版本的COM 庫的類型,而不需要爲每個版本指定特定的PIA。對於使用Microsoft Office對象庫 的應用程序,這是一個 常見方案。 嵌入類型信息使相同版本的 程序能夠與不同版本的Microsoft Office在不同的計算機上工作,而不需要爲每個版本的Microsoft Office重新部署程序或PIA爲 。

+0

默認情況下,嵌入互操作類型設置爲True,但仍然無效。我不得不安裝Outlook 2013,它現在正在工作。一旦實施完成,我會檢查它是否向後兼容。 –

+1

[MSDN]的附加值(https://msdn.microsoft.com/zh-cn/library/mt632251。aspx)我分享的鏈接,也看看這篇文章,你會發現它很有用[使用Visual C#的無痛辦公互操作](http://www.claudiobernasconi.ch/2014/02/13/painless-office-interop - 使用 - 視覺-C-鋒利/) –

相關問題