Почему PHP Mail в теле приисылает 0?

Всем доброго дня.
Имеется типичный код:
<?
    $message = "";

    $to = 'toemail@mail.ru';
 
	$from = "=?UTF-8?b?" . base64_encode($_GET['mail']) . "?=";
	$subject = "=?UTF-8?b?" . base64_encode("Theme - 1") . "?=";
	
	$mail_body = "Поступил " . "123" . " новый ответ от формы обратной связи.\r\nАвтор оставил такие данные:\r\n";
	$header = "MIME-Version: 1.0\n";
	$header .= "Content-Type: text/plain; charset=UTF-8\n";
	$header .= "From: ". $from . " <" . "support@dfnts.com" . ">";
	
	echo $mail_body;
	//Отправка сообщения
	
	if(mail($to, $subject, $mail_body, $header)
	{ echo "<div class='error'>Ваше сообщение успешно отправлено!</div>"; }
	else{ echo "<div class='error'>Ваше сообщение не отправлено!</div>"; }
?>


Обратите внимание на переменную mail_body. В ней происходит объединение строк. Далее эта переменная выступает как тело письма в функции Mail(). После запуска в окне браузера я вижу:
Поступил 123 новый ответ от формы обратной связи. Автор оставил такие данные:
Ваше сообщение успешно отправлено!


На почте же, в теле письма пришел только: 0

Интересно то, что есть убрать операцию объединения строк в переменной mail_body, тогда ее содержимое придет в нормальном виде.
Как с этим бороться?
  • Вопрос задан
  • 487 просмотров
Решения вопроса 1
p00h
@p00h
Фехтовальщик-стропальщик
Рекомендую не воевать с mail, потому как совершенно неизвестно какой реальный бэкенд она использует.
Используйте https://github.com/PHPMailer/PHPMailer, легкий и проверенный, умеет все, что необходимо.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы