Решение проблемы отправки почты в wordpress
Привет! Сегодня хочу поговорить об одной очень распространенной проблеме, с которой часто сталкиваются веб-мастера, которые используют движок WordPress. Это проблема с отправкой почты (а точнее ее неотправкой). Когда-то я тоже сталкивался с такой проблемой у себя на блоге (тогда мне не приходили письма с бекапами базы данных). Теперь все чаще меня просят решить эту проблему на других сайтах, поэтому в этой статье я опишу самые распространенные пути решения данной проблемы.
Чаще всего люди жалуются на то, что им на почту не приходят уведомления о новых комментариях, бекапы базы данных, или не приходит письмо с логином и паролем при регистрации.
За отправку почты в WordPress отвечает php функция mail(), с работой которой на некоторых хостингах возникают проблемы. Для начала опишу несколько простейших решений проблемы:
- Во первых, поинтересуйтесь у вашего хостера, включена ли у вас такая функция mail().
- Во-вторых, убедитесь, что в вашем профиле администратора указан e-mail адрес
- И в-третьих, попробуйте создать на хостинге почту вида wordpress@ваш_домен (например wordpress@seostage.ru). Во всех письмах, отправляемых из worpress, в строке отправителя стоит именно этот адрес, но некоторые хостинги не дают отправить письмо с таким мылом, если фактически на сервере его нет.
Если после вышеперечисленных действий почта все еще не отправляется, тогда нужно заставить wordpress отправлять ее через smtp сервер. Для этого можно пойти двумя путями: с помощью плагина, и с помощью внесения изменений в код.
В первом случае я советую использовать плагин Configure smtp, так как он легкий и имеет мало настроек, а если вы используете гуглопочу, то вам вообще нужно ввести только адрес почты и пароль к ней, а плагин сам подставит все настройки.
Как я сказал выше, если вы используете почту Google, то вам необходимо поставить галку Send e-mail via Gmail и заполнить поля SMTP username и SMTP password. Далее сохраняете настройки и нажимаете кнопку “Отправить тестовое письмо” и ждете, пока письмо придет вам на почту. Причем придти оно должно по адресу, указанному в вашем профиле администратора, а ящик, который вы указали в плагине, является как-бы транзитным, то есть используется только для реализации отправки писем через smtp.
Если вы используете почту на другом сервисе, отличном от Google, то вам, помимо логина и пароля необходимо указать и другие настройки (галку Send e-mail via Gmail уже ставить не нужно)
В полях SMTP host и SMTP port указываете соответственно сервер и порт вашего почтового сервиса. Далее по желанию можно указать следующие настройки. Wordwrap length — количество символов в письме до переноса строки. Sender e-mail и Sender name это адрес отправителя, который будет показываться в строке «От» и имя отправителя. Если же не указывать эти параметры, то они по-умолчанию будут браться из настроек вашего блога.
Если же вы не хотите нагружать свой движок дополнительными плагинами, тогда можно решить проблему, добавив изменения в код. Для этого необходимо открыть файл wp-includes/class-phpmailer.php и внести следующие изменения. (ниже представлены куски кода, в которые внесены изменения; — обозначает пропуск кода) Данный способ представил Lecactus
var $From = "сюда вписываем e-mail"; --- /** * Method to send mail: ("mail", "sendmail", or "smtp"). * @var string */ var $Mailer = "smtp"; --- ///////////////////////////////////////////////// // SMTP VARIABLES ///////////////////////////////////////////////// /** * Sets the SMTP hosts. All hosts must be separated by a * semicolon. You can also specify a different port * for each host by using this format: [hostname:port] * (e.g. "smtp1.example.com:25;smtp2.example.com"). * Hosts will be tried in order. * @var string */ var $Host = "smtp.ваш_smtp_сервер.ru"; --- /** * Sets Mailer to send message using SMTP. * @return void */ function IsSMTP() { $this->Mailer = "smtp"; } /** * Sets Mailer to send message using PHP mail() function. * @return void */ function IsMail() { $this->Mailer = "smtp"; } /** * Sets Mailer to send message using the $Sendmail program. * @return void */ function IsSendmail() { $this->Mailer = "smtp"; } /** * Sets Mailer to send message using the qmail MTA. * @return void */ function IsQmail() { $this->Sendmail = "/var/qmail/bin/sendmail"; $this->Mailer = "smtp"; }
После всех вышеперечисленных действий проблемы с отправкой почты в wordpress, должны исчезнуть. Не забывайте подписываться на обновления моего блога. Желаю удачи! 🙂

Плагином много проще все это сделать!
поставил плагин wp mail smtp. отправил тестовое письмо, все работает. но, не отправляет «Оповещение о новых комментариях по почте». в чем может быть проблема?
до этого вообще не пробовал эту функцию. как то не нужно было тогда, так что не могу сказать точно
Ура! 😯 После установки плагина всё отправляется!!! Спасибо!!!
Спасибо за такую полную подборку и доступные объяснения по решению проблемы отправки почты в wordpress. Для гугловской почты самым простым решением оказался плагин. Если вносить изменения в код, то надо еще помнить, что после обновления версии движка их надо снова повторять 🙂
Не знаю! У меня ни каких таких проблем не возникает!
У меня тоже никогда не возникало проблем с отправкой почты. Все всегда работало без ошибок.
была такая же проблема. помог плагин, правда не тот, про который в статье говорится. название забыл
WordPress стоит на локальном сервере. Поставил плагин Configure SMTP. Настроил через gmail. Тестовое сообщение уходит нормально, а уведомления о новых комментариях не приходят. Оба чекбокса в пункте «Отправить мне письмо когда» в настройках «Параметры/Обсуждения», включены. Удалось решить проблему только повесив хук на comment_post и посылать уведомление с помощью wp_notify_postauthor.
Кто-нибудь сталкивался с подобным? Не хотелось бы оставлять с костылем.
Большое спасибо за информацию! Выручил плагин 😉
Доброго времени суток. Есть проблема, не отправляется пароль при регистрации с телефона. Если регистрируешься с компа, то все в порядке, а с телефона приходится, в лучшем случае, долго ждать. Как решить, подскажете? Спасибо заранее.
Здравствуйте!!!Большое спасибо за хорошую статью.Плагин очень удобный и простой в настройках.От меня-респект автору.
Автору большое спасибо! Плагин реально работает. На версии WP 3.9.1 все отлично работает. Подключал на хостинге TimeWeb, почта Яндекс (выставил порт 465, SSL, авторизацию SMTP auth).
Спасибо, наконец-то настроил. С плагином все прекрасно работает через Gmail.
А если не приходит письмо с паролем новому зарегистрированному на почту, что посоветуете. Хостинг нормальный, платный качественны, может быть дело в домене третьего уровня??
Все пишут о хостингах. А напишите настройки для локального сервера. Как настроить самому эту php функцию mail(). Чтоб работало без всяких плагинов.
Ваши правки в файле исчезнут при первом обновлении ядра.
Спасибо за подробный разбор. WordPress не отправляет письма, натсройка smpt не помогла. Даже тестовое письмо не приходят, хотя все натсроено верно. Что еще может быть? кто-то сталкивался? подскажите, пожалуйста!