Как отправлять почту через внешний smtp
По умолчанию, при отправке почты через sendmail
или функцию mail()
в пхп, письма отправляются через локальный технический почтовый сервер. Иногда подобные письма могут не приниматься (особенно сервисами вроде gmail/mail.ru). Почти всегда эти письма будут попадать в спам, даже если они будут приняты почтовым сервером получателя. Для решения этих проблем можно настроить отправку почты через внешний почтовый сервер по smtp с авторизацией. Для этого необходимо создать свой конфиг для отправки почты через msmtp
.
Это можно сделать в контрольной панели в меню Настройки, или можно создать в корне аккаунта файл с именем .msmtprc.force
(обратите внимание, имя файла начинается с точки) с валидным для msmtp
конфигом. После этого необходимо в контрольной панели в меню Настройки нажать на ссылку “Обновить конфиги”.
Пример файла для GMail:
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 необходимо так же включить доступ для непроверенных приложений.
Так же может потребоваться разрешить вход с помощью нового приложения.
Пример файла для Yandex:
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
Пример файла для Mail.ru:
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
Пример файла для отправки через наши почтовые сервера (mx.dobrohost.ru):
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
.
Пожалуйста проконсультируйтесь со службой поддержки, если у вас будут вопросы по настройке отправки почты.