2009-01-28 91 views
2

用户下订单后,我必须发送详细的电子邮件信息,包含订单详细信息,付款说明,一些额外的文字等。用asp.net创建复杂html电子邮件的最佳方法,怎么样?

我想创建格式良好的HTML电子邮件。

现在我发现了两个选项:

  • 一块手动创建片,通过字符串,它是太麻烦了字符串,
  • 创建实际的aspx页面和装订数据,然后渲染页面的html和作为电子邮件正文发送。

这第二个选项是更直观,更容易除了实现:

  • 我不知道如何实际加载和渲染网页,我知道如何与ASCX做
  • 这似乎实例化页面和渲染它的大部分开销

如何加载页面并进行渲染?你对此任务有其他想法或建议吗?

回答

2

就我个人而言,我想要使用一个模板,无论是在数据库中,或作为一个文件被加载。这个模板将包含HTML中大部分电子邮件的内容,其中可以用内容替换标记。

ex。

<b>Receipt for order # [[ordernum]]</b> 

这样,我可以用简单的字符串替换到dymanic到电子邮件的地方,而不必在每次需要发送的时间来构建整个电子邮件。

+0

毫无疑问,将工作和我已经使用这个方法简单的电子邮件,但在被替换数据的情况下是非常动态或检索从数据库中,它可能是最好使用一个ASPX资源本身。 – Cerebrus 2009-01-28 15:36:28

3

嗯,国际海事组织,你的基本问题相当于“我如何将ASPX资源转换为HTML字符串以传递给MailMessage主体属性?”

您可以简单地通过使用WebRequest到ASPX URL并将该响应读取到Stream中。然后,只需将该流读入一个字符串,即可解决您的主要问题。

编辑:这是一个article,说明了这个概念。

0

尝试使用存储在.NET字符串资源文件中的模板。在这条线上,这也将使本地化变得更容易。

1

在类似情况下,我在我的数据库中存储模板电子邮件消息,以便使用我们软件的人员可以修改消息。它是由用户使用Telerik的在线HTML编辑器控件创建的。在此消息中,我支持几个“mailmerge”类型字段,它们都具有{FirstName},{LastName}等模式。

当发送消息时,我从数据库中提取格式化文本,字符串替换以填充模板中的任何插槽,然后发送它。我猜想关键是我知道这条消息是HTML格式的,因为Telerik控件有助于确保它是如此。但是,没有理由不能创建HTML,然后保存它以备后用。

.aspx页面路由?我只是不会这样做。这是过度杀伤,并没有提供任何优势。

相关问题