如何在php中设置电子邮件正文的样式[重复]
Posted
技术标签:
【中文标题】如何在php中设置电子邮件正文的样式[重复]【英文标题】:How to style email body in php [duplicate] 【发布时间】:2012-04-10 15:22:55 【问题描述】:我想为邮件正文设置样式。我尝试了以下方法来设置邮件正文的样式。但是都没有用
1) 使用的外部样式表 style.css
tdpadding:10px;
mail.php
<link rel="stylesheet" href="style.css"></link><table><td>....</td></table>
2) 定义的内部样式表:
mail.php
<style type="text/css">
td
padding-bottom:8px;
</style>
<table><td>....</td></table>
我知道,内联样式通过 <td style='padding-bottom:8px'>
工作,但我有很多表,内联样式不是一个好主意,有什么变通方法这样就不需要为每个元素定义样式
【问题讨论】:
电子邮件客户端对他们将呈现和不呈现的 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中设置电子邮件正文的样式[重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Sql Server 2008 中设置唯一约束 [重复]