【问题标题】:external css not getting applied in html email [XSLT to html creation ]外部 css 未在 html 电子邮件中应用 [XSLT 到 html 创建]
【发布时间】:2014-08-24 12:18:24
【问题描述】:

我正在从 xslt 生成一个 html,然后将该 html 发送到电子邮件 在我查看电子邮件时未应用 html 中提到的电子邮件 CSS 中。 我的 xslt 是

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="html" encoding="utf-8" omit-xml-declaration="yes" indent="yes" />
  <xsl:param name="FullName" />
  <xsl:param name="Url" />
  <xsl:param name="SiteRoot" />

  <xsl:template match="/">
    <xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE html></xsl:text>
    <html class="AR">
      <head>
        <title></title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
        <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
        <meta http-equiv="content-language" content="en" />
        <xsl:element name="link">
          <xsl:attribute name="href">
            <xsl:value-of select="$SiteRoot"/>
            <xsl:text>Common/Stylesheets/EmailTemplates_en_gb.css</xsl:text>
          </xsl:attribute>
          <xsl:attribute name="rel">
            <xsl:text>stylesheet</xsl:text>
          </xsl:attribute>
        </xsl:element>
      </head>
      <body>
        <div class="Email">
          <div class="TopSection">
            <a href="javascript:void(0)" class="Logo"></a>
            <img>
              <xsl:attribute name="src">
                <xsl:value-of select="$SiteRoot"/>
                <xsl:text>Common/Images/top-banner.gif</xsl:text>
              </xsl:attribute>
            </img>
          </div>
          <div class="Text">
            <p>
              <strong>
                Hi <xsl:value-of select="$FullName" />,
              </strong>
            </p>                  
        </div>
      </body>
    </html>
  </xsl:template>
</xsl:stylesheet>

如果我得到 html 字符串并尝试在一些示例 html 页面中查看该 html,我会查看正确应用的 css。我的 css 有一些背景图片,一些字体设置等。 同样在电子邮件中,虽然我可以看到我的顶级横幅图片 在 .net 部分,我的代码如下所示

    var results = new StringWriter();            
    var stringReader = new StringReader((new DataSet().GetXml()));
    var reader = XmlReader.Create(stringReader);
    var xpathDoc = new XPathDocument(reader);
    var transform = new XslCompiledTransform();
    transform.Load(Server.MapPath(Settings.AdminCoordinatorAddEditTemplatePath));



    var argsList = new XsltArgumentList();
    argsList.AddParam("FullName", "", coordinator.FullName);
    argsList.AddParam("Url", "", strUrl);
    argsList.AddParam("SiteRoot", "", Settings.DomainUrl);
    transform.Transform(xpathDoc, argsList, results);



    return results.ToString();

【问题讨论】:

  • 您是否在设置电子邮件的内容类型?默认情况下,它将是文本。您必须将格式显式设置为 HTML。例如,请参阅此问题,stackoverflow.com/a/7873201/4525
  • 是的,我已经设置好了。同样如前所述,如果我将一些图像内联,它也会呈现。只是外部 css 没有被应用

标签: html email c#-4.0 xslt


【解决方案1】:

除了设置

MailMessage.IsBodyHtml = true;

电子邮件仅使用内联 CSS。

  • 查看电子邮件时不存在外部 css 文件。
  • 呈现电子邮件时不包含标题标签,因此不包含样式标签。

例如,而不是

<div class="TopSection">

应该是这样的

<div style="font-weight:bold;font-size:1.7em;">

【讨论】:

    猜你喜欢
    • 2018-10-03
    • 2019-11-19
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-14
    • 2017-02-14
    相关资源
    最近更新 更多