PHP sendmail () форматирование не сохраняется - PullRequest
2 голосов
/ 28 июля 2010

Я создаю веб-приложение для клиента, который может отправлять электронные письма.Я использую TinyMCE для моего текстового редактора, который работает довольно хорошо.Я использую sendmail () с PHP Swiftmailer для обработки фактической отправки электронной почты.Swiftmailer также хорошо работает.

Единственная проблема, с которой я сталкиваюсь, заключается в том, что при получении электронной почты (в Gmail) форматирование отображается неправильно.В теле письма я получаю следующее:

<p>Oh Hello! This is a test <strong>message</strong>. Here is a link: <a href=\\\"http://www.google.com\\\">Google</a>.</p>\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n<p>Line breaks!<br /> <br /> Shift breaks!</p>\r\n<p>&nbsp;</p>\r\n<p>Bye!</p>

Ссылки отображаются, и это все.Чего мне не хватает?

Спасибо!

Ответы [ 3 ]

3 голосов
/ 28 июля 2010

Ознакомьтесь со вторым и третьим блоками кода в документации, чтобы узнать, как установить HTML-тип содержимого ...

http://swiftmailer.org/docs/header-parameterized

2 голосов
/ 28 июля 2010

Вам необходимо отправить электронное письмо в формате HTML. Вместо этого вы отправляете простой текст HTML. Ссылки отображаются потому, что Google хорош и автоматически связывает то, что он считает действительным URL.

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

0 голосов
/ 08 января 2011

То, что я бы сделал в вашем случае, выглядит примерно так:

<?php

$headers = "From: Me <me@myemail.com>\r\n";
$headers .= "X-Mailer: PHP/".phpversion()."\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";  //States it is HTML Content
$headers .= "Content-Transfer-Encoding: 7bit\r\n";

$subject = "This is my subject";

$message = <<<MESS
<p>Oh Hello! This is a test <strong>message</strong>. Here is a link: <a href="http://www.google.com">Google</a>.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Line breaks!<br /> <br /> Shift breaks!</p>
<p>&nbsp;</p>
<p>Bye!</p>
MESS;

if(mail("", $subject, $message, $headers) == True){
     echo "Message Sent";
} else {
     echo "Message NOT Sent"
}

?>

ПРИМЕЧАНИЕ. GMAIL ДЕЙСТВИТЕЛЬНО требователен к способу отображения электронных писем.Лучше всего создать учетную запись Gmail и проверить, как она выглядит.Hotmail похож

...