HTML标签为何显示在我的PHP字符串?
-
06-09-2019 - |
题
我使用其发送回所包含的变量$主体内的消息的邮件功能。我想将消息发送给自己用粗体某些单词和一些休息的标签。
下面是我的代码(定界符语法):
$body = <<<CTS
<h1><b>Order for $name on datevariable</b></h1><br /><br />
<b><u>Administrative Details</u></b><br />
<b>Employee ID:</b> $id<br />
<b>Cost Center:</b> $cost_center<br />
<b>Approved By:</b> $approved_by<br />
<b>Delivery Bldg:</b> $delivery_bldg<br />
<b>Delivery Contact Email:</b> $delivery_contact<br />
<b>Ext:</b> $del_contact_ext<br />
CTS;
由于某些原因,当我收到的电子邮件,它看起来像这样:
<h1><b>Order for James Important on datevariable</b></h1><br /><br />
<b><u>Administrative Details</u></b><br />
<b>Employee ID:</b> 213123<br />
<b>Cost Center:</b> 132123<br />
<b>Approved By:</b> Chris Seckla<br />
<b>Delivery Bldg:</b> 6<br />
<b>Delivery Contact Email:</b> test@email.com<br />
<b>Ext:</b> 56<br />
它填补了变量值,但由于某种原因,忽略html标签。有人可以告诉我怎么解决这个问题?
另外,它忽略了休息代码,且只有把休息,当我离开的线路空白。在此任何想法?
解决方案
如果这是一封电子邮件,你必须设置MIME类型为text / html,而不是text / plain的。否则,你的电子邮件阅读器将解释该消息以纯文本格式,并忽略所有的HTML标记。
举例来说,可以说要调用这样的mail
功能:
mail( $to, $subject, $message, $headers )
在$headers
,你需要(当然调整您的特定情况下,)沿着这些路线的东西:
$headers = "From: webmaster@example.com\r\n";
$headers .= "Reply-To: webmaster@example.com\r\n";
$headers .= "Content-Type: text/html";
如果您要发送纯文本和HTML电子邮件(所以非HTML的读者可以看到一个干净版本的电子邮件没有所有这些标签),我建议考虑看看的此的教程多部分邮件的更详细的解释。
其他提示
您必须设置从PHP发送时的电子邮件使用HTML格式来显示的附加报头:
的Content-Type:text / html的;字符集=任何
请确保您发送的声明是HTML ...
头示例:
mail('email@domain.com', 'Subject',
'<html><body><b>Hello</b></body></html>',
"To: The Receiver <recipient@domain.com>\n" .
"From: The Sender <email@domain.com>\n" .
"MIME-Version: 1.0\n" .
"Content-type: text/html; charset=iso-8859-1");
如果你想用PHP发送邮件,我会建议你使用PEAR Mail_Mime包,而不是简单的邮件功能
不隶属于 StackOverflow