Часто Задаваемые Вопросы
Предварительные проверки..
Я отправляю письмо через РНР скрипт на хостинге.
Я отправляю письмо через удаленный почтовый клиент.
Предварительные проверки.
Проверка домена. Перейдите в браузере на домен, с которого выполняется отправка (в почтовом ящике домен указан после символа @). Домен должен открываться в браузере. Если домен недоступен по какой-либо причине - нужно решить изначально эту проблему, так как почта не будет работать на недоступном домене.
Проверка хостинга. Проверьте оплачен ли ваш хостинг, не блокируется ли он по какой-либо другой причине. Почта не будет работать, если хостинг заблокирован за неуплату. Если у Вас нет доступа по адресу сайта или к панели управления хостингом - обратитесь в техподдержку для проверки на наличие блокировки IP.
Проверка нейм-серверов. Проверьте указаны ли наши НС для домена через сервис whois. Для проверки можно воспользоваться онлайн сервисами проверки whois. Узнать актуальные для вашего хостинг-аккаунта НС можно в биллинге, в разделе Заказы - Данные сервера.
(Если вы все же осознанно используете для домена сторонние НС - проверять и настраивать доменные записи нужно на выбранных НС).
Проверка доменных записей. Перейдите в панель хостинга, раздел Доменные имена - Записи. Проследите чтобы для домена существовала запись с типом МХ. Без этой записи почта не будет работать. Если записи нет - создайте ее по шаблону:
domain.com. МХ 10 mail.domain.com
Также проверьте наличие записей dkim, spf, dmarc.
Запись spf создается автоматически при добавлении домена в панели хостинга, она имеет вид
domain.com. TXT v=spf1 ip4:xxx.xxx.xxx.xxx a mx ~all
Если такой записи нет - создайте ее по шаблону выше. Вместо "xxx.xxx.xxx.xxx" укажите IP адрес нашего сервера (он указан в этом же разделе в записях типа А).
Записи dkim и dmarc можно добавить в разделе Почтовые домены - (выделите домен) - Изменить. Для этого отметьте галочками опции "Включить DKIM для домена" и "Включить DMARC для домена" и сохраните форму.
Проверьте отправку почты через час после настройки доменных записей. Многие проблемы в работе почты решаются уже на этом этапе.
После проверки все еще наблюдаются проблемы? Нужно проверить отправку писем через веб-клиент. Он находится в панели хостинга, в разделе Почтовые ящики - (выделите ящик) - Roundcube. Для проверки используйте сервис mail-tester.com . Перейдите на этот сервис, скопируйте емейл, указанный на нем и укажите этот емейл в качестве получателя письма в roundcube. Заголовок и текст письма указывайте произвольные. После отправки письма нажмите на кнопку проверки на mail-tester.com и дождитесь отчета (он формируется в среднем в течение 2-3минут).
Если при отправке из roundcube сервис пишет что не получил ваше письмо или во время отправки возникла ошибка - обратитесь в техподдержку, для более детальной проверки.
Если же письмо из roundcube доставлено - нужно проверять ваш способ отправки письма. Каким способом Вы выполняете отправку?
Я отправляю письмо через РНР скрипт на хостинге.
Если отправка через roundcube проходит без ошибок, то проблем с почтой на уровне хостинга нет. Нужно смотреть детальнее ваш скрипт отправки. Стоит проверить такие моменты:
- Самый распространенный случай - Адрес в sendmail_path. Измените email адрес в настройках PHP. По умолчанию это webmaster@example.com и письма с подобным отправителем не будут доставляться на сервера mail.ru. Изменить email можно в панели ISPmanager, раздел PHP - выделяете нужную вам версию PHP - Настройка - пункт "sendmail_path" - Изменить и далее заменяете webmaster@example.com на ваш email. Указанным вами email должен быть на вашем домене(как создать email)
- Нет ли синтаксических ошибок в коде. При наличии синтаксических или логических ошибок в коде скрипта отправки в лог ошибок будет вписано сообщение с информацией об ошибке. Просмотреть лог можно в панели хостинга, в разделе Журналы - *.error.log.
- Правильно ли указан отправитель. Желательно указывать в качестве отправителя почтовый ящик в том же домене, с которого отправляется письмо. К примеру для сайта domain.com таким почтовым ящиком может быть admin@domain.com. Создать его можно в панели хостинга, в разделе Почтовые ящики. Лучше не указывать в качестве отправителя пользовательские почтовые ящики gmail, mail.ru, yandex. Если же указан вовсе несуществующий почтовый ящик (к примеру webmaster@example.com) - письмо будет с высокой вероятностью помечено как спам. Отправитель указывается непосредственно в скрипте отправки, через заголовок From.
- Указан ли адрес возврата. При отправке функцией mail укажите принудительно адрес возврата. Это делается через опцию -f в функции mail, по примеру:
mail($mailRecipient, "TEST mail", $message, $headers, '-f '.$mailSender);
При отправке по SMTP с авторизацией адрес возврата по умолчанию будет таким же как и адрес отправителя. - Нет ли ошибок в путях. Особенно актуально для скриптов отправки на основе phpmailer. В начале скрипта отправки прописано подключение файла с библиотекой phpmailer, через функции include, require или require_once. Проверьте чтобы пути, указанные в функциях подключения реально существовали на диске. В linux, в отличие от windows, в путях имеет значение регистр букв. Если, к примеру, в скрипте указан путь class/phpmailer.php, а на диске он назван как class/PHPmailer.php - такой скрипт на хостинге не будет отрабатывать, так как имена не идентичны. В windows же такой скрипт будет работать. Чтобы это исправить нужно или поменять пути в скрипте, или переименовать папки и файлы, так чтобы они были идентичны указанным в скрипте.
- Настройки подключения SMTP. Если используете отправку по SMTP - проверьте указанные в скрипте настройки подключения. Через roundcube проверьте, подходит ли указанный в скрипте пароль для входа в указанный почтовый ящик. Если нет - сбросьте пароль от почтового ящика. В качестве хоста подключения можно использовать адрес вашего сайта.
- Настройки шифрования в phpmailer. Для phpmailer часто проблема возникает с настройками шифрования. Если опции шифрования для вас не критичны - самое простое решение это отключение шифрования. Для этого укажите такие настройки в скрипте:
$mail->SMTPAutoTLS = false;
$mail->SMTPSecure = false;
$mail->Port = 25;
Для более детальной отладки скрипта нужно обратиться к своему разработчику.
Я отправляю письмо через удаленный почтовый клиент.
Проверьте отправку письма через roundcube в панели хостинга. Если там письмо отправляется, а в вашем почтовом клиенте нет - проблема связана с настройками почтового клиента. Большинство подобного рода проблем решаются через:
- Замену хоста для подключения. В общем случае стоит использовать в качестве хоста адрес mail.ваш_домен. Если же с ним наблюдаются проблемы - попробуйте заменить хост на адрес вашего сервера (отображается в биллинге, в разделе Заказы - Данные сервера).
- Отключение шифрования. В настройках подключения поставьте порт 25, без шифрования.
- Устранения блокировки провайдером. Интернет провайдеры иногда блокируют 25 порт в своей сети. Обращение к провайдеру с просьбой проверки (и снятия) блокировки может помочь.
- Смену почтового клиента. Если для Вас не принципиально через какой почтовый клиент работать - есть смысл проверить подключение в другом почтовом клиенте.