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

5

我希望能够为邮件正文添加样式。我尝试了以下几种方法,但都没有成功:

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'> 实现。但是如果有很多表格,使用内联样式并不是一个好主意。是否有任何方法可以解决这个问题,而不需要为每个元素定义样式?


1
电子邮件客户端对CSS样式的渲染非常挑剔。最好的方法是找到一份全面的电子邮件样式指南(但我现在想不起来链接了)。 - Corbin
1
我找不到一个。我发现独立的电子邮件客户端对安全非常谨慎,但至少可以呈现大多数HTML内容。疯狂的事情是当你尝试支持免费提供商时。Gmail会剥离背景图像但保留颜色。Hotmail将所有背景颜色变成灰色。Yahoo则会做其他的事情。这让我想发送一封纯文本电子邮件,只说“将此URL复制到您的浏览器中”。 - ghoti
较旧版本的Outlook将忽略大部分CSS和现代CSS定位。 - Ben Rowe
3个回答

7

对于电子邮件而言,通常最安全的方式是使用表格和内联样式(这是在网页设计中不应该做的一切)。

$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>';

很遗憾,内部和外部样式表并不总是在不同的电子邮件客户端中起作用。


2
通常情况下,表格是最好的选择。不幸的是,为了获得最广泛的支持,您需要使用内联样式。许多元素会级联,因此您不必为每个元素设置样式。例如,在table元素上使用font-family将应用于td元素。
Campaign Monitor在此提供了有关最常见电子邮件客户端对CSS支持的有用概述:http://www.campaignmonitor.com/css/ 电子邮件模板(http://htmlemailboilerplate.com/)还将为您提供一个模板,使您可以开始并教您如何避免许多电子邮件客户端的常见缺点。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接