Форматирование электронной почты Umlaut и переносы строк - PullRequest
1 голос
/ 17 июля 2011

Я просто работаю над функцией почты и у меня проблемы с ее форматированием.Я хочу отправить письмо в формате HTML.Новые строки должны быть переведены в переводы строк.В настоящее время я использую эти функции

$mail_filtered    = nl2br($mail_filtered);
$mail_filtered    = htmlspecialchars($mail_filtered);

Умляуты отображаются правильно, если я использую эту функцию, но разрывы строк отображаются в виде тегов <br/> в почте.Заголовок письма выглядит так:

"Content-Type: text/html", "Charset=utf-8"

Что я сделал не так?

1 Ответ

1 голос
/ 17 июля 2011

Если вы используете nl2br для добавления разрывов строк HTML к «физическим» последовательностям разрывов строк и затем применяете htmlspecialchars, вы также конвертируете добавленные <br /> в &lt;br /&gt;, который затем отображается как <br />:

$str = "foo\nbar>baz";
var_dump(nl2br($str) === "foo<br />\nbar>baz");  // bool(true)
var_dump(htmlspecialchars(nl2br($str)) === "foo&lt;br /&gt;\nbar&gt;baz");  // bool(true)

Сделайте наоборот, сначала используйте htmlspecialchars, а затем nl2br:

var_dump(nl2br(htmlspecialchars($str)) === "foo<br />\nbar&gt;baz");  // bool(true)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...