如何在php中设置电子邮件正文的样式[重复]

Posted

技术标签:

【中文标题】如何在php中设置电子邮件正文的样式[重复]【英文标题】:How to style email body in php [duplicate] 【发布时间】:2012-04-10 15:22:55 【问题描述】:

我想为邮件正文设置样式。我尝试了以下方法来设置邮件正文的样式。但是都没有用

1) 使用的外部样式表 style.css

tdpadding:10px;   

ma​​il.php

<link rel="stylesheet" href="style.css"></link><table><td>....</td></table>

2) 定义的内部样式表:

ma​​il.php

 <style type="text/css">
td
    padding-bottom:8px;


</style>
<table><td>....</td></table>

我知道,内联样式通过 &lt;td style='padding-bottom:8px'&gt; 工作,但我有很多表,内联样式不是一个好主意,有什么变通方法这样就不需要为每个元素定义样式

【问题讨论】:

电子邮件客户端对他们将呈现和不呈现的 CSS 内容非常非常挑剔。最好的办法是找到关于电子邮件样式的综合指南(希望我能想到一个链接,但我想不到)。 我找不到。我发现独立的电子邮件客户端对安全性持偏执态度,但至少会呈现大多数 html。疯狂的事情是当您尝试支持免费提供者时。 Gmail 会去除背景图片,但会留下颜色。 Hotmail 将所有背景颜色变为灰色。雅虎做了别的事情。让我想发送一封纯文本电子邮件,上面写着“将此 URL 复制到您的浏览器”。 旧版本的 Outlook 将忽略大多数 css 和现代 css 定位.. 【参考方案1】:

对于电子邮件,通常最安全的选择是表格和内联样式(网页设计中不应该做的所有事情)。

$mailBody = '<html><body>';
$mailBody .='<table ><tr>';
$mailBody .='<td style="padding:10px"></td>';
$mailBody .='<td style="padding:10px"></td>';
$mailBody .='<td style="padding:10px"></td>';
$mailBody .='</tr></table>';
$mailBody .='</body></html>';

遗憾的是,内部和外部样式表并不总是适用于不同的电子邮件客户端。

【讨论】:

【参考方案2】:

通常情况下,表格是要走的路。不幸的是,要获得最广泛的支持,您需要使用内联样式。很多做级联,所以你不必为每个元素设置样式。例如,在 table 元素上使用 font-family 会将其应用于 td 元素。

Campaign Monitor 在此处http://www.campaignmonitor.com/css/

中提供了对最常见电子邮件客户端 CSS 支持的有用概述

电子邮件样板文件 (http://htmlemailboilerplate.com/) 还将为您提供一个模板,您可以从它开始,它会教您如何避免许多电子邮件客户端的许多常见缺点。

【讨论】:

【参考方案3】:

有一个解决方案。请查看:CSS to Inline style

还有另一个库可以完成相同的任务。 http://www.pelagodesign.com/sidecar/emogrifier/

基本上这些库将您的 css 样式规则转换为内联样式,以便所有电子邮件客户端都能正确呈现您的 HTML 文档

【讨论】:

以上是关于如何在php中设置电子邮件正文的样式[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 React 中设置与主页的正文图像不同的样式?

如何在 Sql Server 2008 中设置唯一约束 [重复]

电子邮件 ID、主题和消息未在 android Send Intent 中设置

如何在电子邮件签名中设置旋转图像

有没有办法删除 kohana 在电子邮件中设置的返回路径?

在 Laravel 中发送电子邮件后在表格中设置“状态 = 已发送”