使用 Outlook 2010 和 2013 C# 从 winform 实现发送邮件
Posted
技术标签:
【中文标题】使用 Outlook 2010 和 2013 C# 从 winform 实现发送邮件【英文标题】:Implement Send Mail from winform using both Outlook 2010 and 2013 C# 【发布时间】:2016-08-29 14:38:22 【问题描述】:我创建了一个使用 Winform 发送电子邮件的表单。我的 Outlook 2010 窗口正在打开并且工作正常。但是,在我朋友的机器上,它不工作,因为他有 Outlook 2013。是否可以创建一个在 Outlook 2010 和 2013 上都可以工作的发送邮件。下面是我正在使用的代码:
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 对象
【问题讨论】:
您可以send an email html格式并包含一些图像。促使您使用 Outlook interop 发送电子邮件的要求是什么? 原因是因为在winform中我必须直接根据用户输入的表单设置图像和标题。另外,我需要通过 Outlook 发送邮件,因为我需要使用公司电子邮件地址等。 所有这些都可以使用SmtpClient
毫无问题地完成。看看我在第一条评论中分享的link 或this one。
好的。我试试看
@RezaAghaei 我已经和我的上级核实过,他们说他们需要在 Outlook 中打开它,因为他们可能会在发送之前修改电子邮件,而且 Winform 上的电子邮件仅用作模板跨度>
【参考方案1】:
如果您想拥有版本独立性,在添加对所需 Office 互操作程序集的引用后,例如 Microsoft.Office.Interop.Outlook.dll
,右键单击 dll 引用并选择属性,然后在属性网格中,将 Embed Interop Types
设置为 @987654326 @。
更多信息:
Walkthrough: Embedding Type Information from Microsoft Office Assemblies in Visual Studio
如果您在引用 COM 的应用程序中嵌入类型信息 对象,您可以消除对主互操作程序集的需要 (PIA)。此外,嵌入的类型信息使您能够 实现应用程序的版本独立性。也就是说,你的 可以编写程序以使用来自多个版本的 COM 的类型 库,而不需要每个版本的特定 PIA。这是一个 使用 Microsoft 对象的应用程序的常见场景 办公图书馆。 嵌入类型信息可以实现相同的构建 与不同版本的 Microsoft Office 一起工作的程序 不同的计算机,而无需重新部署程序或 每个 Microsoft Office 版本的 PIA。
【讨论】:
默认情况下,嵌入互操作类型设置为 True,但仍然无法正常工作。我必须安装 Outlook 2013,它现在可以工作了。一旦实现完成,我会检查它是否向后兼容。 附加到我分享的MSDN链接,也看看这篇文章,你会发现它很有用Painless Office Interop Using Visual C#以上是关于使用 Outlook 2010 和 2013 C# 从 winform 实现发送邮件的主要内容,如果未能解决你的问题,请参考以下文章
如何区分 Outlook 2010 中的内联图像和附件 [C#]
sharepoint 2013 使用outlook 打开sharepoint 任务失败
如何使用 Outlook 2010(无 smtp)和 python 发送带有嵌入图像(不是附件)的 HTML 格式电子邮件
将一封或多封邮件从 Outlook 拖放到 C# WPF 应用程序