0


我想创建自己的电子邮件模板而不必使用第三方软件,我只想为自己清理一些基础知识:)
首先,所有电子邮件模板都归结为几乎是带有内联 CSS 的 HTML 正文吗?因此,使用 C# 发送模板化电子邮件将类似于:

SmtpClient smtpClient = new SmtpClient("smtphost");
MailMessage msg = new MailMessage();
msg.To.Add("toaddress6@place.com");
msg.Subject = "A TEMPLATE";
msg.Body = "<body> This is where the html goes O.o </body>";
msg.From = new MailAddress("fromaddress@anotherplace.com");
msg.IsBodyHtml = true;
smtpClient.Send(msg);

其次,使用模板发送图像我假设它们要么作为附件添加,要么通过长地址链接到服务器上的图像位置,类似于网页?并显示在html中。

4

2 回答 2

1

我以前没有尝试过,但看看MailDefinition

于 2012-05-07T05:32:37.263 回答
0

以下是我在创建电子邮件模板系统时遇到的一些解决方案:

  • 我所知道的框架中没有内置的模板系统。我建立了一个过去运行良好的系统。现在我做事很简单。我会将 {year} 之类的项目替换为当前年份,{year2} 替换为 2 位数年份或 {year:2,} 这更多的工作,但会导致您的任何变量都能够在没有的SubString()情况下进行内联初始构建之后的许多工作。(你可以做 {var:name:upper}, :lower, :titlecase; 你可以传入一个对象并使用简单的反射技术来读取所有公共属性并进行自动替换......天空是极限!)重要的是给自己很大的回旋余地,不过分违反 YAGNI 原则。当您构建这样的系统时...

  • 从你想如何结束的例子开始。我最终写了一些类似的东西<html><body><h1><font face="arial">Hello, <b>{var:firstname}!</b> It's {hour} {ampm} here...</font></h1> ...</html>来进行替换并吐出最终副本。然后,使用正则表达式检查所有内容都已替换,这样您就不会发送出去Hi, null null! It's nice to see you at {hour} {ampm}!,并使您成为收件人的笑柄。认真思考您希望如何插入内容。你可以用你自己的模板系统做很多疯狂的事情,无论好坏,所以 TEST TEST TEST。单元测试对于回归测试很方便。请记住,一旦您上线,您就不想犯错误,因为您将它们发送给客户,并且在客户看到它之前无法更改它,就像您对网站所做的那样。

  • 大多数 HTML 时事通讯都是 HTML 格式,使用内联 CSS 或(gasp!) TABLE s 和FONT标签进行布局。这背后的原因是因为大多数电子邮件 HTML 渲染引擎都停留在过去。适用于 Thunderbird 的东西可能适用于 Mozilla,但在 GMail 或 Hotmail 中看起来像垃圾。我的建议是使用尽可能少的内联 CSS,如果这样做,请使用一些电子邮件客户端进行测试,包括基于 Web 和非基于 Web 的客户端,以确保在每个客户端中都能获得所需的效果。使用TABLEs 进行布局,没有花哨的 CSS3 东西。KISS 规则在这里适用,是的,它是过去使用旧式 HTML 的一次爆炸。在编写完可怕的代码、使用表格进行布局等之后,您可能会觉得需要洗个澡,但这就是我们需要用我们所得到的东西做的事情。

也请阅读:http: //www.hongkiat.com/blog/design-perfect-newsletter/

于 2012-05-07T05:08:36.653 回答