Я пытался отправить электронную почту для регистрации, приглашений и т. Д.
При локальном развитии отправляются электронные письма. Однако на сервере не поступает никаких писем.
Я установил 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 показал, что он был принят к доставке, однако получатель так и не получил его.