2016-08-29 34 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-锋利/) –

相关问题