sendmail работает, но PHP mail () не работает

Я не могу отправить электронное письмо с помощью PHP mail (). Я также пробовал PHPMailer и Swiftmail без успеха. Однако следующая команда на сервере успешно отправляет почту.

cat test.txt | mail -s "test mail" my@email.com 

Есть ли способ отслеживать, откуда возникает проблема? mail () просто возвращает true или false.

Related of "sendmail работает, но PHP mail () не работает"

На PHP> = 5.2 существует error_get_last() для возврата любой ошибки, error_get_last() последним вызовом функции. Есть подробная информация о том, как получить эквивалентную информацию из более старых версий PHP на связанной странице.

Что касается PHPMailer, существует свойство $mailer->ErrorInfo которое содержит последнюю ошибку. SwiftMailer должен иметь что-то подобное. Скорее всего, если почта работает из командной строки, но не из PHP или библиотек рассылки, происходит неправильная конфигурация. Я предполагаю, что ваш хост не имеет настроенного параметра PHP sendmail_path .

Включите все ошибки, предупреждения и уведомления с помощью error_reporting (E_ALL). Иметь ошибки куда-то полезными или регистрировать обратный вызов, который делает некоторые полезные вещи.

Тогда вы увидите, что происходит. Обработка ошибок PHP бесполезна по умолчанию (и ее значения по умолчанию различны во всем мире, поэтому вам необходимо переопределить их на практике).

По всей вероятности, он настроен на выполнение SMTP на localhost, с которым ваш MTA не разрешает ретрансляцию. Измените его конфигурацию, чтобы вместо этого использовать sendmail, или исправьте MTA, чтобы разрешить ретрансляцию с localhost.