php mail () html - отправка в виде простого текста - PullRequest
0 голосов
/ 09 сентября 2018

Люди,

За много лет я отправил много писем с PHP, и у меня никогда не было проблем с HTML. Я запустил новый сервер Apache / PHP на днях, и письма отправляются нормально.

Все письма отправляются в виде простого текста. Похоже, кодировка не работает.

Даже с:

$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";

Устанавливается ... отправка электронной почты не HTML, а обычный текст.

Я могу взять этот же PHP-скрипт и запустить его на другом сервере, и я получаю электронное письмо в формате HTML.

Так что я знаю, что мой PHP-скрипт правильный. Какая настройка сервера в PHP / Apache приведет к отправке всех электронных писем в виде простого текста?

Вот что получатель получает на своем конце в области сообщения текстового электронного письма:

Content-type: text/html; charset=iso-8859-1

From: no-reply@yahoo.com
Message-Id: <20180909154528.C4128612EC@ww1.localdomain>
Date: Sun,  9 Sep 2018 11:45:28 -0400 (EDT)

<html><body><h1>Hello, World!</h1></body></html>

Код моего скрипта:

$to = 'test99@domain.com';
$subject = 'php test';

$from='no-reply@yahoo.com';

$headers ='';
$headers .= 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= 'From: '.$from.' '. "\r\n";

$message = '<html><body>';
$message .= '<h1>Hello, World!</h1>';
$message .= '</body></html>';

mail($to, $subject, $message, $headers);

1 Ответ

0 голосов
/ 09 сентября 2018

Я предполагаю, что ваш почтовый клиент считает smtp-сервер "небезопасным" и, следовательно, просто отображает весь html в виде открытого текста, а не отображает его. (Чтобы избежать запуска скрытых скриптов, которые могут быть вызваны загрузкой некоторых связанных ресурсов, таких как CSS или изображения)

PHPs * Функция 1003 * использует smtp-сервер так, как он настроен в вашем php.ini. В большинстве случаев ничего не настраивается вообще, поэтому сервер действует как сам «smtp-сервер», который гарантированно будет обнаружен, поскольку спам вызывает около 99% самых основных проверок на спам.

Я бы порекомендовал переключиться на некоторые из доступных PHP-Mail-клиентов (например, https://github.com/PHPMailer/PHPMailer)) и настроить каждое электронное письмо для отправки (с помощью SMTP-Auth) на сервер, который, как известно, является надежным и хорошо настроенный SMTP-сервер, вместо «localhost».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...