我正在使用PHPMailer并在for循环中使用这行代码将HTML表格的行添加到电子邮件正文中。 (php的完整pastebin在这里:http://pastebin.com/iujp27hU)
$body .= "<tr><td style='". $rush_part_style . "'>" . $row[0]
. "</td> <td align='center' style='" . $rush_part_style . "'>" . $quantity_to_order
. "</td> <td>" . $row[2] . "</td></tr>";
电子邮件通常会很好,但每隔一段时间,td
标签的一个有角度的括号就会被编码到其HTML实体中。
当我在Outlook中查看源代码时,它的外观如下:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">h3, p, table td {font-family:arial;}</style>
<table><tr><td><u>SD Part Number</u></td><td><u>Quantity</u></td><td><u>UOM</u>/td></tr>
- - some rows removed for brevity - -
<tr><td style="">P1400642-00048-C</td><td align="center" style="">26</td><td>EA</td></tr>
<tr><td style="">P1400642-00046-C</td>< td align='center' style=''>20</td> <td>EA</td></tr>
<tr><td style="">P1400642-00106-C</td><td align="center" style="">25</td><td>EA</td></tr>
<tr><td style="">P1400642-00036-C</td><td align="center" style="">67</td><td>EA</td></tr>
...
我不明白为什么它会将<
>
中的一个随机编码到其角色实体中。
这个问题以前发生过,但我可以发送100多封电子邮件而不会发生。部件号与是否出现无关。
我该如何解决这个问题?
- 其他信息编辑 -
测试202行的大量订单会在发送时产生这些格式错误。
这根本没有属性,只有纯HTML。 PHPMailer在Send()
上对其进行了修改。
答案 0 :(得分:1)
尝试在表格行的末尾输出换行符\r\n
$body .= "<tr><td style='". $rush_part_style . "'>" . $row[0] . "</td> <td align='center' style='" . $rush_part_style . "'>" . $quantity_to_order . "</td> <td>" . $row[2] . "</td></tr>\r\n";
我有一个类似的问题,并且在检查html电子邮件的来源时,似乎有些任意插入换行符。关闭</tr>
后添加换行是我的修复。
答案 1 :(得分:0)
输出有< td
,而PHP有<td
。这很奇怪,因为输出突然间没有任何空间。
要解决问题,您可以在运行脚本时将$body
和$order_mail->Body
输出到屏幕或文件中。查看转发HTML的引入点。如果这不能提供更多信息,请尝试不使用PHP变量,并自己填写一些随机内容。
其他想法:
style=''
)的问题 - 您可以尝试重写代码,以便省略空属性(或者通过添加一些虚拟文本使属性永远不会为空,例如,风格:text-align:left;
)。"
而不是'
),PHPMailer可能会遇到问题。通常在调试时:尽可能地分割代码并输出调试信息,以确定问题的确切位置。是在构建HTML,还是PHPMailer在您将其加载到$order_mail->Body
时完成的?或者当你调用Send()
时会发生这种情况(在这种情况下你不能用PHP发现它)?
答案 2 :(得分:-1)
不确定这是否会对您的问题有所帮助,但值得一试,您可以通过将变量放在大括号{$rush_part_style}
中并将其放在HTML中来避免将PHP连接到HTML。这样可以避免关闭和重新打开html。