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

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

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

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

peter# mail example@example.com 

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

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

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

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

Thanx

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

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

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

 whereis sendmail 

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

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

Мне пришлось использовать …

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

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

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