由于空格特征,HTML-Mail损坏

时间:2014-06-23 10:26:54

标签: php html email

以下是我用来创建HTML电子邮件的PHP代码的一小段:

$tmpl = '<table border="0" width="100%";><tr><td>%title%</td></tr><tr><td>%text%</td></tr></table>';     

$html = '<table border="0" width="100%";>';
$html .= '<td width="20%" style="padding:0;">';
if(isset($var)) {   
    $html .= 'Value: '.$object->val;
}
$html .= '</td>';
$html .= '</table>';    

$tmpl = str_replace('%text%', $html, $tmpl);

$mail->setBody( $tmpl );
$mail->send();

有时,在电子邮件程序中查看时,HTML视图中的邮件会被破坏,因为在开放的TD元素中有空格字符。像这样:

< td width="20%" style="padding:0;">

这个空间角色来自哪里?

3 个答案:

答案 0 :(得分:2)

与php mail()函数有同样的问题,我的html样式被看似随机的空格打破了。在邮件发送之前使用 wordwrap()来解决问题。

$message = wordwrap($message, 70);

mail("person@example.com","Some subject",$message);

www.w3schools.com explanation, example

答案 1 :(得分:0)

在这里看到这一行?

$html = '<table border="0" width="100%";>';

在width =“100%”之后,您不需要此符号 - &gt; ; 尝试删除它。

答案 2 :(得分:0)

标记有错误

$tmpl = '<table border="0" width="100%";><tr><td>%title%</td></tr><tr><td>%text%</td></tr></table>';

请注意;

中的border="0" width="100%";>

您没有连接$html

以下行会覆盖之前构建的表格 $html = '</table>';

您需要将其更改为;

$html .= '</table>';

建议措施

<?php
$tmpl = '
<table border="0" width="100%">
 <tr>
    <td>%title%</td>
 </tr><tr>
   <td>%text%</td>
 </tr>
</table>';     

$html = '<table border="0" width="100%">';
$html .= '<td width="20%" style="padding:0;">';
if(isset($var)) {   
    $html .= 'Value: '.$object->val;
}
$html .= '</td>';
$html .= '</table>';    

//Debug:
// echo $html;

$tmpl = str_replace('%text%', $html, $tmpl);

$mail->setBody( $tmpl );
$mail->send();