@ikfah012
Не самый умный парень в этом чате

Почему перестали отправляться письма после переезда хостинга?

Добрый день.
Перенёс сайт на другой хостинг и перестали отправляться письма с формы.
Нашёл в консоли следующее:
Notice: Undefined variable: message in /var/www/vhosts/mail.php on line 22

Код выглядит следующим образом:
<?php
error_reporting(E_ALL);
include 'mysql.php';
$method = $_SERVER['REQUEST_METHOD'];
//Script Foreach
$c = true;
if ( $method === 'POST' ) {

	$project_name = trim($_POST["project_name"]);
	$admin_email  = trim($_POST["admin_email"]);
	$form_subject = trim($_POST["form_subject"]);

	foreach ( $_POST as $key => $value ) {
		if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" ) {
			$message .= "
			" . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "
			<td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td>
			<td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td>
		</tr>
		";
	}
}
} else if ( $method === 'GET' ) {

	$project_name = trim($_GET["project_name"]);
	$admin_email  = trim($_GET["admin_email"]);
	$form_subject = trim($_GET["form_subject"]);

	foreach ( $_GET as $key => $value ) {
		if ( $value != "" && $key != "project_name" && $key != "admin_email" && $key != "form_subject" ) {
			$message .= "
			" . ( ($c = !$c) ? '<tr>':'<tr style="background-color: #f8f8f8;">' ) . "
			<td style='padding: 10px; border: #e9e9e9 1px solid;'><b>$key</b></td>
			<td style='padding: 10px; border: #e9e9e9 1px solid;'>$value</td>
		</tr>
		";
	}
}
}

$message = "<table style='width: 100%;'>$message</table>";

function adopt($text) {
	return '=?UTF-8?B?'.Base64_encode($text).'?=';
}

$headers = "MIME-Version: 1.0" . PHP_EOL .
"Content-Type: text/html; charset=utf-8" . PHP_EOL .
'From: '.adopt($project_name).' <'.$admin_email.'>' . PHP_EOL .
'Reply-To: '.$admin_email.'' . PHP_EOL;

mail($admin_email, adopt($form_subject), $message, $headers );


?>

Что могло случиться?
Версия php одинаковая
  • Вопрос задан
  • 131 просмотр
Пригласить эксперта
Ответы на вопрос 3
dimonchik2013
@dimonchik2013
non progredi est regredi
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
Каждая строка должна быть отделена символом CRLF (\r\n). Строки не должны быть длиннее 70 символов.
Ответ написан
Комментировать
slo_nik
@slo_nik Куратор тега PHP
Добрый день.
В коде, который Вы привели в вопросе, на 22 строке нет переменной $message.
Зато она встречается первый раз на строке 15 и сразу идёт конкатенация строки, но переменная не определена.
В первых строках своего кода попробуйте её инициализировать таким образом.
$message = '';
Ответ написан
Ваш ответ на вопрос

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

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