通过 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 年的互联网。 我通常将我的样式嵌入到电子邮件的<head>
的工作表中,然后参考内联元素的类。
您可以在发送之前从技术上重新呈现您的电子邮件。只需加载获取 HTML 文档,在其中创建 标记,然后获取 CSS 文件的内容并将其放在两者之间。这将给出相同的结果,但应该比重写所有电子邮件更快、更容易、更通用:S
这里有一些CSS inlining tools 可以帮助您减轻一些痛苦。
【参考方案1】:
最好在 index.html
主体的某个位置放置一个带有所有 CSS 的 <style>
块。一些电子邮件客户端/门户网站使用<link rel="stylesheet" type="text/css" href="..." >
删除了嵌入在标题中的所有CSS。因此,不使用内联 CSS 可能会导致您的电子邮件出现“损坏”,或者在使用 @gmail.com
的帐户上看起来很糟糕。
【讨论】:
【参考方案2】:在您的 index.html 文件中,包含一个 <style>
标记,如下所示。
<style>
.class
style: attribute;
</style>";
应该可以,如果没有,我可能会建议您在网站上托管您的样式表,并在您的索引文件头部包含一个类似于下面的<link>
标签
<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 电子邮件的 <head>
。
【讨论】:
建议使用内联 CSS,因为并非所有邮件客户端都支持<head>
中的 CSS。
如果我使用bootstrap
意味着我该如何添加css?或者如果我在inline format
中添加所有 css ??
是的,内联添加。以上是关于通过 PHP 发送包含 CSS 样式表的 HTML 电子邮件的主要内容,如果未能解决你的问题,请参考以下文章
未应用网站样式。 (从 php 包含调用 stylesheet.css)
css Polylang的自定义语言切换器。包含PHP函数和SCSS样式。 HTML标记使用BEM方法。 SCSS文件是你