Подтвердить что ты не робот

PHP-почта не отправляется, как мне отлаживать?

Я пытаюсь отправить электронное письмо для регистрации, приглашений и т.д.

В локальной разработке отправляются электронные письма. Однако на сервере не поступает никаких писем.

Я установил postfix. Я пытался настроить почтовый сервер, но сдался. Итак, в настоящее время, если я набираю терминал

peter# mail [email protected]

приходит электронное письмо. Однако это не отправляет электронную почту:

 $res  = mail('[email protected]', 'subj', 'bodddd');

не только это, но эхо $res ничего не дает. Ни true, ни false.

Что и как сделать, чтобы он работал?

спасибо

4b9b3361

Ответ 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 показал, что он был принят для доставки, однако получатель так и не получил его.