PHP почта не отправляется, как мне отладить? - PullRequest
14 голосов
/ 27 октября 2011

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

При локальном развитии отправляются электронные письма. Однако после того, как на сервер не приходят письма.

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

peter# mail example@example.com

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

 $res  = mail('example@example.com', 'subj', 'bodddd');

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

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

1018 * спасибо *

Ответы [ 2 ]

18 голосов
/ 27 октября 2011

Согласно вашему комментарию выше, похоже, что ваш путь sendmail либо неверный, либо закомментирован в вашем php.ini Это должно быть примерно так:

sendmail_path = /usr/sbin/sendmail -t -i

Если вы не уверены, где находится ваш бинарный файл sendmail, вы можете найти его с помощью:

whereis sendmail
3 голосов
/ 20 ноября 2016

Решение, которое работало для меня на виртуальном хостинге, состояло в том, чтобы использовать дополнительный параметр -f в функции mail.Вместо ...

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

Я должен был использовать ...

mail($to, $subject, $body, $headers, " -fvaliduser@validdomain.com");

Согласно Руководству PHP дополнительные параметры предоставляются в качестве дополнительных аргументов для sendmail.Обратите внимание, что отсутствие пробела между -f и электронной почтой кажется преднамеренным.

В моем случае на одном конкретном хосте у меня не было доступа к журналам postfix / sendmail.Исходная команда вернула истину, и журнал cpanel показал, что она была принята для доставки, однако получатель так и не получил ее.

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