如何将具有正确格式的PHP网页发送到任何电子邮件客户端?

时间:2013-07-18 02:00:20

标签: php email webpage

我遇到了使用正确的格式通过电子邮件发送PHP页面的问题。该页面包含由简单<TD><TR>组成的表格以及用于将负数转为红色的javascript,javascript显示如下:

<head>
<style type="text/css">
 td.negative { color : red; }
</style>
<script language="JavaScript" type="text/javascript">
<!--
function MakeNegative() {
    TDs = document.getElementsByTagName('td');
    for (var i=0; i<TDs.length; i++) {
            var temp = TDs[i];
            if (temp.firstChild.nodeValue.indexOf('-') == 0) temp.className = "negative";
        }
}
//-->
</script>
</head>
<body>
<~~~~~~~tables goes here~~~~~~~>
<script language="JavaScript" type="text/javascript">
<!--
MakeNegative();
//-->
</script>
</body>

我可以使用互联网浏览器以正确的格式显示网页:

enter image description here

但是当我用PHPMailer或mailsend.exe邮寄它时,格式变得混乱,红色和表格中的负数不再混乱。以下是发送到Gmail帐户的屏幕截图:

enter image description here

以下是发送到Outlook(hotmail)帐户的屏幕截图:

(你需要至少10个声望才能发布超过2个链接......我最好在评论中发布链接,请检查,谢谢)

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

你需要使用内联css,许多网络电子邮件提供商在样式块中禁用css样式,如:

<style>
</style>

所以,你真的需要:

<td style="color: red;">-1</td>
每个

此外,有人指出,这种创作可以完全用PHP完成。虽然,看起来你似乎没有问题。如果你使用所有内联样式,你会没事的。

当您从数据库中提取数据时,只需按以下方式构建行:

$tableRows = '';
foreach($dbRows as $row) {
    $number = $row['number'];
    if ($number < 0) {
      $tableRows .= '<tr><td style="color: red;">'.$number.'</td></tr>';
    } else {
      $tableRows .= '<tr><td>'.$number.'</td></tr>';
    }
}

// $ tableRows现在将包含所有行数据作为HTML。

你可以用更少的代码完成这项工作,但我想说明这一点。