Почему HTML-теги отображаются в моей строке в PHP? - PullRequest
2 голосов
/ 27 мая 2009

Я использую функцию mail, которая отправляет обратно сообщение, которое содержится в переменной $ 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 ]

16 голосов
/ 27 мая 2009

Если это электронное письмо, вы должны установить тип 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-читатели могли видеть чистую версию электронного письма без всех этих тегов), я бы посоветовал взглянуть на это руководство более подробное объяснение составных электронных писем.

3 голосов
/ 27 мая 2009

Убедитесь, что вы отправили заголовок, который утверждает, что это 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"); 
3 голосов
/ 27 мая 2009

Вы должны установить дополнительный заголовок при отправке с php для отображения электронного письма в формате html:

Content-Type: text / html; кодировка = любой

0 голосов
/ 27 мая 2009

Если вы хотите отправлять почту с помощью PHP, я бы рекомендовал вам использовать пакет PEAR Mail_Mime вместо обычной почтовой функции

...