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


How to style email body in php

我想设计邮件正文的样式。我已经尝试了以下方法来设置邮件正文的样式。但它们都不起作用

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

td{padding: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'>来工作的,但我有很多表,执行内联样式不是一个好主意,有没有什么办法可以让你不需要为每个元素定义样式

对于电子邮件,通常最安全的选择是表和内联样式(在web设计中不应该做的一切)。

$mailBody = '<html><body>';
$mailBody .='<table width="100%"><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>';

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

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

Campaign monitor在这里提供了对最常见电子邮件客户端CSS支持的有用概述http://www.campaignmonitor.com/css/

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

有一个解决方案。请查看:CSS到内联样式

还有另一个库执行相同的任务。http://www.pelagodesign.com/sidecar/emogrifier/

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