sendmail работает, но PHP mail () не работает - PullRequest
0 голосов
/ 12 мая 2010

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

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

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

Ответы [ 2 ]

0 голосов
/ 13 мая 2010

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

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

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

0 голосов
/ 12 мая 2010

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

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

...