C#中的Word邮件合并向导

时间:2017-04-20 16:56:14

标签: c# .net ms-word vsto

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

1 个答案:

答案 0 :(得分:0)

首先,我建议您不要使用VBA或Interop库。两者都只能在安装了MS Office的计算机上运行。使用VBA应用程序时,如果具有不同版本的Office的用户将运行它们,并且您将有新的更新,则可能会遇到问题。众所周知,Interop在服务器场景中也存在问题。

对于邮件合并,从基于OpenXML的第三方工具包中选择一个可能是有意义的,因此它们可以在没有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,可以帮助您入门。您将能够编写将完全控制发送邮件消息的所有方面的应用程序。我为我们公司做了一个简单的邮件发送库。我花了一些时间来弄清楚它的来龙去脉,但是现在它已经成了一种“忘掉它”的东西。它运行顺利,没有任何问题。