【问题标题】:Using CSS in HTML emails sent using PHP在使用 PHP 发送的 HTML 电子邮件中使用 CSS
【发布时间】:2013-05-23 20:19:41
【问题描述】:

我在 php 方面不是那么出色,请原谅我。

所以我正在使用 PHP 发送 html 电子邮件。

经过一些研究,我使用表格构建了一个,并编写了一个类似于你们中许多人将使用的 PHP 发送脚本。

我知道内联样式似乎是最常用的添加样式的方式。

当我在 $headers 之前定义 $message 变量时,这样的事情可能吗?

$message = " 

  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>BPN UK Contact Request</title>
    <style type="text/css">

     .exampleclass { 
       CSS Rules
     }

    </style>

    REST OF HTML LAYOUT, INCEPTION TABLES ETC ETC

"

或者我是否必须在标签等中对其进行内联样式处理,这样似乎需要更多的工作和更多的限制。

对不起,如果这是一个愚蠢的问题。

【问题讨论】:

  • 事实上,我相信这正是你应该做的。
  • 仅供参考:Google/Gmail 和其他人将删除您的所有 CSS,除非它们是内联编码的。

标签: php css html-email


【解决方案1】:

这是完全可以接受的,但要意识到许多基于 Web 的邮件客户端将替换/修改内联 CCS 以防止该 css 影响“容器”网络邮件站点。保持 CSS 简单,不要尝试花哨的样式。

【讨论】:

  • 我是一个人,很好地吸取了教训,前段时间(分享财富);-)
  • 更糟糕的是,现代版本的 Microsoft Outlook 将完全忽略您的 CSS,以及几乎所有的内联样式。尽管在各方面都很悲惨,但 Outlook 是一个足够受欢迎的客户端,值得认真考虑专门设计用于使用它的电子邮件的价值;由于它在几乎所有呈现 HTML 的客户端中都具有最受限制的样式功能子集,因此您可以有理由相信,在 Outlook 中看起来应该如此的电子邮件也会在其他地方这样做。
  • @AaronMiller 是的。然而,Waskiwee Wabbit! 的皮肤方法不止一种
【解决方案2】:

您执行此操作的方式应该可以正常工作,但是您需要记住一些事项。首先是你需要确保有一个内容类型的标题。这告诉浏览器将消息显示为 HTML。如果你不这样做,你会收到一封带有一大堆纯文本的 html 标签的电子邮件。这样的事情就足够了:

$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

此外,将 HTML 中的双引号 (") 替换为单引号 ('),因为双引号指示 $message 的开始和结束。

【讨论】:

    【解决方案3】:

    你也可以试试:

        <?php
       //include CSS Style Sheet
       echo "<link rel='stylesheet' type='text/css' href='path-to-css-file' />";
    
       //include a javascript file
       echo "<script type='text/javascript' src='path-to-javascript-file'></script>";
    ?>
    

    【讨论】:

    • 这真的会引起注意吗?
    • 我正在寻找一种方法来重构文件中的所有 CSS,并且能够通过使用此处提到的样式表方法来完成此操作。
    • 很高兴它帮助了@Levi!
    【解决方案4】:

    作为一个为工作编写了几百个电子邮件模板的人,如果您想最大限度地提高兼容性,我建议您只使用内联 css 的电子邮件,并将纯文本版本发送到。

    【讨论】:

      【解决方案5】:

      是的,所有内容都需要内联,但实际上这非常笨拙且不太干。

      在工作中,我们使用 InlineStyle 类,它允许您像往常一样将所有 CSS 放在文档的 &lt;head&gt; 中,然后您可以使用该类解析 HTML 和 CSS 并转换头部中的所有 CSS 为内联样式。因此,您获得了内联样式,但您编写的 HTML 就像您通常在 &lt;head&gt; 中使用 CSS 一样。效果很好。

      【讨论】:

        猜你喜欢
        • 2014-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-23
        • 2016-04-03
        • 2016-11-03
        • 1970-01-01
        相关资源
        最近更新 更多