通过 PHP 发送包含 CSS 样式表的 HTML 电子邮件

Posted

技术标签:

【中文标题】通过 PHP 发送包含 CSS 样式表的 HTML 电子邮件【英文标题】:Send HTML email including CSS style sheet via PHP 【发布时间】:2014-01-05 09:58:23 【问题描述】:

我想将包含 CSS 样式表的 html 页面发送到电子邮件帐户。问题是 CSS 样式表根本不可见。我必须内联每个 CSS 样式吗?这似乎是一种非常低效的方法。还有其他想法吗?

下面是发送邮件的 php 代码:

<?php
$to = "myaccount@gmail.com";

// subject
$subject = "Test mail";

// message
$message = file_get_contents("index.html");

// from
$from = "myaccount@gmail.com";

// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

// Additional headers
$headers .= "From:" . $from;

// Mail it
mail($to,$subject,$message,$headers);

echo "Mail Sent.";
?>

非常感谢您的帮助。提前致谢。

【问题讨论】:

是的,您需要使用内联 CSS。大多数电子邮件服务,例如 Google(尤其是)都会丢弃外部 CSS。 在为电子邮件编写 HTML 时,想想 1996 年的互联网。 我通常将我的样式嵌入到电子邮件的&lt;head&gt; 的工作表中,然后参考内联元素的类。 您可以在发送之前从技术上重新呈现您的电子邮件。只需加载获取 HTML 文档,在其中创建 标记,然后获取 CSS 文件的内容并将其放在两者之间。这将给出相同的结果,但应该比重写所有电子邮件更快、更容易、更通用:S 这里有一些CSS inlining tools 可以帮助您减轻一些痛苦。 【参考方案1】:

最好在 index.html 主体的某个位置放置一个带有所有 CSS 的 &lt;style&gt; 块。一些电子邮件客户端/门户网站使用&lt;link rel="stylesheet" type="text/css" href="..." &gt; 删除了嵌入在标题中的所有CSS。因此,不使用内联 CSS 可能会导致您的电子邮件出现“损坏”,或者在使用 @gmail.com 的帐户上看起来很糟糕。

【讨论】:

【参考方案2】:

在您的 index.html 文件中,包含一个 &lt;style&gt; 标记,如下所示。

<style>
.class
style: attribute; 

</style>";

应该可以,如果没有,我可能会建议您在网站上托管您的样式表,并在您的索引文件头部包含一个类似于下面的&lt;link&gt; 标签

<link rel='stylesheet' type='text/css' href='http://www.yourstylesheet.com'>";

这些方法中的任何一种都应该有助于解决您的问题。

【讨论】:

这与 js 代码一样有效吗? (jQuery 和一个 js 库)【参考方案3】:

Google、Outlook、Yahoo 所有主要的电子邮件服务提供商都不允许 CSS 外部文件。他们选择内联样式和表格来呈现具有任何样式的正确电子邮件消息,这听起来可能已经过时了。

编写代码可能很乏味,但像 https://litmus.com/ 和 envato 这样的公司会帮助解决一些模板和格式问题。

我的 2 美分:电子邮件提供商无法信任发送的所有信息来源,因此这是阻止恶意代码的一种方法。

【讨论】:

【参考方案4】:

只需将 css 代码嵌入该 html 电子邮件的 &lt;head&gt;

【讨论】:

建议使用内联 CSS,因为并非所有邮件客户端都支持 &lt;head&gt; 中的 CSS。 如果我使用bootstrap 意味着我该如何添加css?或者如果我在inline format 中添加所有 css ?? 是的,内联添加。

以上是关于通过 PHP 发送包含 CSS 样式表的 HTML 电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

使用PHP将带有样式(css)的html转换为pdf

未应用网站样式。 (从 php 包含调用 stylesheet.css)

PHP.9-HTML+CSS-CSS样式

css Polylang的自定义语言切换器。包含PHP函数和SCSS样式。 HTML标记使用BEM方法。 SCSS文件是你

CSS样式表怎么做

是否可以在不使用 MIME 的情况下使用包含 CSS 装饰的 PHP 发送 html 电子邮件?