在.Net中发送格式化(HTML)电子邮件的方法

时间:2010-12-30 20:32:20

标签: .net email html-email

网站通常会向您发送各种电子邮件:帐户激活,密码重置等。

过去,我构建了一个系统,我在XmlDocument中生成xml标记,然后使用XslCompliedTransform将xml转换为html电子邮件。这样做的缺点是XSLT既不好玩也不容易改变(至少对我而言)。

最近,我向过去的同事借用了一个想法,我在SSRS中使用数据驱动的订阅以及数据库表作为消息队列。数据驱动器订阅每10分钟运行一次,并发送队列中的所有电子邮件,这些电子邮件是作为WebArchive发送的报告,以便它们在电子邮件中呈现,而不是作为附件发送。这很好用,但感觉有点像矫枉过正。我看到的好处是有人可以在BIDS中打开报告并更改布局而不必有太多的编程经验。

你们有什么方法可以通过你的应用程序向用户发送html格式的电子邮件?

2 个答案:

答案 0 :(得分:2)

这对你正在做的事情可能有点过分,但我通常如何解决这个问题的方法是为我想在数据库中发送的每封电子邮件存储html和文本模板。模板具有动态数据的替换代码。例如:

  

< - Replacement.FirstName - >

然后在负责发送我的电子邮件的.net服务中,我获得了模板,并获得了需要出去并进行必要替换的排队电子邮件的值。最后,我使用RegEx.replace去除任何剩余的替换代码(如果有的话)。

对于实际发送电子邮件,我使用System.Net.Mail命名空间,因为它允许您发送多部分消息,因此如果最终用户的客户端仅支持纯文本,则他们看不到我的所有html标记,因为我发送电子邮件的文本和html版本。

即使它不是我喜欢的最优雅的解决方案,因为我通常会在数据库中管理html / text模板,以便电子邮件设计人员可以管理这些。此外,我通常会列出可用的替换代码,以便他们只需单击按钮即可将相关的替换代码添加到模板中。

答案 1 :(得分:1)

您可能也想要使用此类进行调查:

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.maildefinition.aspx

您可以使用键/值传递字典。

与.NET登录控件(如ForgotPassword)

使用的相同

这里有一些代码示例:

http://www.go4answers.com/Example/systemnetmail-html-template-problem-88358.aspx