2

我正在使用一个邮件函数,它发送回包含在变量 $body 中的消息。我想用某些粗体字和一些中断标签向自己发送消息。

这是我的代码(HEREDOC 语法):

$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 标记。有人可以告诉我如何解决这个问题吗?

此外,它忽略了中断标签,仅在我留下一行空白时才放置中断。对此有什么想法吗?

4

4 回答 4

16

如果这是一封电子邮件,您必须将 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 读者可以看到没有所有这些标签的电子邮件的干净版本),我建议您查看教程以获取有关多部分电子邮件的更详细说明。

于 2009-05-27T03:25:19.467 回答
3

从 php 发送电子邮件时,您必须设置一个额外的标题才能使用 html 格式显示:

内容类型:文本/html;字符集=随便

于 2009-05-27T03:25:07.233 回答
3

确保您发送标明它是 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"); 
于 2009-05-27T03:27:20.303 回答
0

如果您想使用 PHP 发送邮件,我建议您使用 PEAR Mail_Mime 包而不是普通邮件功能

于 2009-05-27T14:22:43.493 回答