$sentmail
возвращает true, но письмо по какой-то причине не отправляется.
Функция mail
в PHP просто отправляет почту через MTA (mail агент передачи) на сервере. true
может просто означать, что локальный MTA принял его. Но это еще не все, что вам нужно.
Во-первых, действительно ли ваш хостинг-провайдер разрешает исходящую почту? Или сообщения отправляются в виртуальную «черную дыру»?
Теперь предположим, что ваш локальный MTA — скорее всего sendmail
— работает, а почта соскочила с сервера и попала в реальный мир. Хорошо, отлично!
Но не так быстро…
Дело в том, что если вы отправляете письмо, это не значит, что принимающая сторона считает письмо действительным. И, скорее всего, принимающая сторона решила, что случайное электронное письмо, отправленное случайным сервером, является просто СПАМом.
Я отправил более подробный ответ здесь, но когда дело доходит до спама, все сводится к следующему: есть ли у вас SPF (Sender Policy Framework) настройка записи для вашего домена? У вас также установлена запись PTR (обратный DNS) для этого домена?
Если у вас нет записи SPF или PTR, вероятность того, что ваше сообщение будет просто помечено как СПАМ, довольно высока.
Если вы серьезно относитесь к отправке почты со своего сервера, вам необходимо, по крайней мере, получить набор записей SPF и PTR.
person
Giacomo1968
schedule
18.06.2014
true
означает только то, что сообщение было принято для доставки сервером. Отсутствие сообщения может означать, что оно попало в спам, сервер неправильно настроен для отправки почты и т. д. Вместо этого вам следует попробовать serverfault.com. - person jeroen   schedule 18.06.2014mail()
возвращаетtrue
, проблема не в PHP. Вам следует посмотреть логи вашего почтового сервера. Письмо могло быть и в папке со спамом... - person Sverri M. Olsen   schedule 18.06.2014