По умолчанию, при отправке почты через sendmail
или функцию mail()
в пхп, письма отправляются через локальный технический почтовый сервер. Иногда подобные письма могут не приниматься (особенно сервисами вроде gmail/mail.ru). Почти всегда эти письма будут попадать в спам, даже если они будут приняты почтовым сервером получателя. Для решения этих проблем можно настроить отправку почты через внешний почтовый сервер по smtp с авторизацией. Для этого необходимо создать свой конфиг для отправки почты через msmtp
.
Это можно сделать в контрольной панели в меню Настройки, или можно создать в корне аккаунта файл с именем .msmtprc.force
(обратите внимание, имя файла начинается с точки) с валидным для msmtp
конфигом. После этого необходимо в контрольной панели в меню Настройки нажать на ссылку Обновить конфиги
.
defaults logfile ~/.msmtp.log account local host smtp.gmail.com port 587 from ваш_емейл@gmail.com auth on user ваш_емейл@gmail.com password ваш_пароль tls on tls_starttls on tls_certcheck off keepbcc on account default : localДля отправки почты через gmail необходимо так же включить доступ для непроверенных приложений. Так же может потребоваться разрешить вход с помощью нового приложения.
defaults logfile ~/.msmtp.log account local host smtp.yandex.ru port 587 auth on keepbcc on from ваш@емейл user ваш@емейл password ваш_пароль tls on tls_starttls on tls_certcheck off account default : local
defaults logfile ~/.msmtp.log account local host smtp.mail.ru port 587 auth on keepbcc on from ваш@емейл user ваш@емейл password ваш_пароль tls on tls_starttls on tls_certcheck off account default : local
defaults logfile ~/.msmtp.log account local host mx.dobrohost.ru auth on keepbcc on from ваш@емейл user ваш@емейл password ваш_пароль account default : local
После применения нового конфига, для проверки корректности настройки, можно выполнить в шелле команду:
php -r "mail('ваш@емейл', 'Test', 'Test');"
Для проверки из сайта, в командную строку можно ввести код:
if (mail("ваш@емейл","test subject", "test body","From: ваш@емейл"))
echo "Сообщение передано функции mail, проверьте почту в ящике.";
else
echo "Функция mail не работает, свяжитесь с администрацией хостинга.";
В корне аккаунта находятся файлы .msmtp.log
и phpmail.log
. Если что-то с почтой не работает - можно посмотреть в конце этих файлов - там указана судьба каждого письма и описаны все ошибки.
Обратите внимание, .msmtp.log
начинается с точки, если вы смотрите файлы по фтп или в шелле в mc
- должен быть включен показ скрытых файлов.
После некоторого обновления контрольной панели эти файлы перенесены в
~/logs/
и теперь называютсяmsmtp.log
иphpmail.log
. Если вы не видите их в корне аккаунта, значит они в каталогеlogs
.
Пожалуйста проконсультируйтесь со службой поддержки, если у вас будут вопросы по настройке отправки почты.