【问题标题】:CSS on Email电子邮件上的 CSS
【发布时间】:2010-10-15 23:12:52
【问题描述】:

有没有人找到一种在以编程方式生成的电子邮件中嵌入 CSS 的好方法。我发现最好的方法是将样式代码放入资源文件中并将其调用到代码中。

一个例子是

Dim objBuilder
objBuilder = New StringBuilder

objBuilder.Append(Resources.SystemEmail.CSSStyle)
objBuilder.Append("My Styled Email")

Dim _Body As String = objBuilder.ToString()

这将构建电子邮件的正文

有没有什么方法可以为电子邮件制作模板文件,或者有更好的方法将样式表调用到一个模板文件中。

我的 .resx 文件中的代码是

<STYLE TYPE="text/css">
<!--
body
{

    font-family: Tahoma, Verdana, Arial;
    font-size: 10pt;
    padding: 3px 0px 0px 0px;
    margin: 0px 0px 0px 0px;

}
-->
</STYLE>

在字符串中调用 this 会调用 this inline

下面的答案发送消息我会用这个

Dim client As New SmtpClient("localhost")
Dim toAddr As New MailAddress(MailRecipients)
Dim fromAddr As New MailAddress(MailFrom)
Dim message As New MailMessage(fromAddress, toAddress)


message.Subject = "The Subject"
message.Body =  _Body 
message.IsBodyHtml = True
message.BodyEncoding = System.Text.Encoding.UTF8

client.Send(message)

【问题讨论】:

  • 我很惊讶没有人警告您不要发送 HTML 电子邮件。
  • 请解释一下,这是为少数不支持它的人准备的。
  • 使用premailer 移动你的css内联。
  • 媒体选择器支持更差。我发现大多数客户端,包括非常流行的客户端都会忽略任何具有媒体选择器的 CSS。因此,您不能发送 HTML 电子邮件并拥有单独的打印/显示版本。另一个原因是电子邮件中的 html 越少越好,而是使用链接。

标签: asp.net css email smtp


【解决方案1】:

我们成功的唯一方法是包含 CSS 内联。文档标题样式 CSS 包含不一致或不可靠。

另外,请确保您的电子邮件标头设置为: 内容类型:text/html; charset=ISO-8859-1

编辑 UTF-8 也是一个不错的选择。该语句的关键点是将 Content-type 设置为 text/html

【讨论】:

  • +1 表示内联,-1 表示 ISO-8859-1。您能否给出使用 ISO-8859-1 而非 UTF-8 的充分理由(2009 年,即普遍支持 UTF8)?
  • 我是 Piskvor,UTF-8 得到很好的支持,而 latin1 不提供必要的字符
  • 我们在全球范围内使用 ISO-8859-1,因为我们遇到了各种错误,因为我们的网站在人们的计算机上呈现不当。很大程度上与我们的客户如何提交数据有关(来自 word、文本编辑器等)
【解决方案2】:

以下是每个电子邮件客户端支持的 CSS 样式的综合指南: http://www.campaignmonitor.com/css/

您需要了解的指南: http://www.campaignmonitor.com/design-guidelines/

还有大量免费的预建模板可供您参考: http://www.campaignmonitor.com/templates/

最后,同一家公司提供了一个测试工具,以合理的费用向您展示您的邮件将如何显示在每个电子邮件客户端中: http://www.campaignmonitor.com/testing/

【讨论】:

  • 来自知道他们电子邮件的人的出色答案和出色的参考链接。
【解决方案3】:

不幸的是,您需要在元素中包含 CSS 内联,以便在电子邮件客户端之间具有任何模糊的兼容性。此外,您应该使用表格进行布局(列等),因为 CSS div 布局经常失败。附加的图像也主要用于 cid: URLs。 Thunderbird 是关于兼容性最好的邮件客户端(很明显,因为它使用 Gecko 渲染器)。前景最差。

此外,还可以使用带有纯文本替代方案的多部分 mime。我使用数据库来存储电子邮件模板,有纯文本和 html 模板,具有 {{replaceable}} 值。

【讨论】:

    【解决方案4】:

    内联 CSS 是确保最大兼容性的必要条件。

    像 MailChimp 这样的一些系统会获取你的元素类,解析你的 CSS,并用内联样式替换类属性。您可以编写自己的代码来执行此操作。

    【讨论】:

      【解决方案5】:

      除了每个人都推荐的内联 CSS 之外,请记住,电子邮件通常在线显示在另一个网页中,例如通过 Yahoo!邮件、Hotmail 或 Gmail。如果允许body 样式声明或随机类名,您可以想象随之而来的混乱。尽管某些系统可能会尝试保留这些规则,但结果无法预料。

      【讨论】:

      • 因此电子邮件上的 css 永远不会使每个邮件系统上的电子邮件都相同,是否还有其他选项,例如 old hat html 编码
      • 您可以使用样式,但不能指望将这些样式整齐有效地收集到样式块中。使用 HTML 元素的样式属性,您可以控制字体属性。只是希望您的代码是重复和冗长的。字体还不错,但定位是不行的。
      猜你喜欢
      • 2019-11-19
      • 1970-01-01
      • 2017-06-03
      • 2010-11-14
      • 2014-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-19
      相关资源
      最近更新 更多