我正在实施一个评论控制,允许人们选择评论并将它们发送到指定的部门。电子邮件需要以特定方式格式化,我想知道最好的方法是什么。
我应该将所有样式信息硬编码到一个庞大的方法中,还是应该尝试创建一个单独的文件并将其读入,然后用相关信息替换某些标签?
如果可能,查找并使用某种模板库。这将使每封电子邮件成为一个模板,然后比硬编码的表单更容易维护。
Campaign monitor 有一些很棒的、经过充分测试的免费模板:
http://www.campaignmonitor.com/templates/
确保您使用的任何内容都能在所有客户端中正常显示。
一个很棒的指南:
http://www.campaignmonitor.com/blog/archives/2008/05/2008_email_design_guidelines.html
除了使用某种模板,尽管它很乏味,内联样式是样式化 HTML 电子邮件最跨客户端兼容的方式。并非每个电子邮件客户端都会获取外部样式表,而且许多电子邮件客户端在嵌入样式部分的情况下做得并不好。
在这种情况下,我会为电子邮件选择一组相当简单的样式规则,以确保它在不同的电子邮件客户端中看起来相同,并尽量不要过于依赖图像,因为许多客户端需要额外的点击才能显示内容。
我会使用模板方法。创建一个简单的正则表达式模板系统并不难,用'somevar'的值替换#somevar#之类的东西。您还可以使用预制模板系统,例如 PHP 的 Smarty。我认为这将是最干净的方法。
亚历克斯
我过去曾使用 XLST 模板来格式化电子邮件。通常,最好使用表格和内联 CSS 构建电子邮件。请注意,outlook 2007 不支持背景图片 :(
绝对使用模板。我已经使用自定义标签使用文本模板完成了它,如下所示:
<p>Dear |FIRST_NAME|,
但我真的不能推荐这个;这是一个痛苦的世界。我第二次这样做(log4net 的 html 电子邮件附加程序)时,我使用 xslt 将对象(在本例中为 log4net 消息)转换为 html 电子邮件。整洁多了。
请注意,某些客户端(例如 Lotus Notes)不支持 XHTML,因此请使用纯旧的 HTML 1.0,没有 css,您应该没问题。