PHP-почта не отправляется, как мне отлаживать?
Я пытаюсь отправить электронное письмо для регистрации, приглашений и т.д.
В локальной разработке отправляются электронные письма. Однако на сервере не поступает никаких писем.
Я установил postfix. Я пытался настроить почтовый сервер, но сдался. Итак, в настоящее время, если я набираю терминал
peter# mail [email protected]
приходит электронное письмо. Однако это не отправляет электронную почту:
$res = mail('[email protected]', 'subj', 'bodddd');
не только это, но эхо $res
ничего не дает. Ни true
, ни false
.
Что и как сделать, чтобы он работал?
спасибо
Ответы
Ответ 1
Согласно вашему комментарию выше, похоже, что ваш путь sendmail либо ошибочен, либо закомментирован в вашем php.ini. Это должно быть примерно так:
sendmail_path = /usr/sbin/sendmail -t -i
Если вы не знаете, где находится ваш бинарный файл sendmail, вы можете найти его, используя:
whereis sendmail
Ответ 2
Решение, которое работало для меня на общем хостинге, заключалось в использовании дополнительного параметра -f
в функции mail
. Вместо...
mail($to, $subject, $body, $headers);
Мне пришлось использовать...
mail($to, $subject, $body, $headers, " [email protected]");
В соответствии с руководство php дополнительные параметры предоставляются в качестве дополнительных аргументов sendmail. Обратите внимание, что отсутствие пробела между -f
и письмом кажется намеренным.
В моем случае на одном конкретном хосте у меня не было доступа к журналам postfix/sendmail. Первоначальная команда вернула true, и журнал cpanel показал, что он был принят для доставки, однако получатель так и не получил его.