C# 中的 Word 邮件合并向导

Word Mail Merge Wizard in C#

我有一项任务需要在 Word (2016) 中执行邮件合并。我需要执行正常的邮件合并,但我需要在不使用 Outlook 的情况下发送一些自定义电子邮件。我真的很想使用内置的邮件合并向导,因为我们的用户很熟悉它,但我找不到调用该向导的方法。我为 VBA 找到了一个 ShowWizard 方法,但对于 C# 没有类似的方法。是否可以使用 VSTO C# 访问邮件合并向导?有没有更好的方法来实现目标?

首先,我建议您不要使用 VBA 或 Interop 库。两者都只能在安装了 MS Office 的机器上 运行。对于 VBA 应用程序,当使用不同版本 Office 的用户将 运行 它们以及您何时会有新更新时,您可能会遇到问题。 Interop 在服务器场景中也存在问题。

对于邮件合并,从基于 OpenXML 的第 3 方工具包中选择一个可能是有意义的,因此它们可以 运行 没有 MS Office(想想服务器场景)。您将需要带有数据占位符的 MS Word 模板文档。然后您可以使用 c# 加载报告数据并将数据与模板合并以获得最终文档(docx、pdf、xps 或图像格式)。下面是一个这样的工具包使用的代码,用于将数据库中的数据与模板合并以获取 pdf 文档:

IEnumerable<Customer> customers = DataAccess.GetCustomerById(15);
DocumentGenerator dg = new DocumentGenerator(customers);
DocumentGenerationResult result = dg.GenerateDocument("MyTemplate.docx", "MyReport.pdf");

在此 link 您可以找到更多信息和示例。

到目前为止,您已经有了生成邮件合并文档的方法。现在来解决您的第二个问题,即邮寄这些文件。

我假设您的电子邮件服务器是基于 MS Exchange 的。较新版本的 MS Exchange Server 公开了可以从客户端使用的 Web 服务,而无需安装 Outlook。

有一些分步教程,例如 https://msdn.microsoft.com/en-us/library/office/dn567668(v=exchg.150).aspx,可以帮助您入门。您将能够编写完全控制发送邮件消息各个方面的应用程序。我为我们公司做了一个简单的邮件发送库。我花了一些时间来弄清楚它的来龙去脉,但现在它是一种设置好后就不用管的东西。它运行很顺利,没有任何问题。