WordPress не отправляет почту — Решено

Раздел: Разные "бока"
Написано: 13.11.2016
Автор: Antonio

Заметил что перестали приходить письма от WordPress блога.
Решил разобраться в чем же дело.

wordpress 4.5

И то что я увидел меня немного расстроило.


Ранее я всегда считал что WordPress разрабатывает команда профессионалов, периодически выходят разные обновления, после установки которых рассказывается как же много багов найдено и пофиксено.

Однако судя по проблеме с отправкой почты из Вордпресса этот баг старый и корректно устранить разработчики WordPress не хотят, возможно просто не обращают на него внимания (и так сойдет, так как проблему частично решают плагины).

Суть проблемы проста — если у вас в настройках установлено отправлять на почту новые комментарии (например на модерацию), то WordPress пытается отправить письмо от почты wordpress@вашдомен — это действие получается не на всех хостингах. В моем случае apache писал в лог ошибку, вот ее часть

PHP Fatal error:  Uncaught exception 'phpmailerException' with message 'Invalid address: [email protected]' in /site/www/wp-includes/class-phpmailer.php:946\nStack trace:\n#0 /site/www/wp-includes/pluggable.php(352): PHPMailer->setFrom('wordpress@nemcd...', 'WordPress')\n#1

Т.е. что-то сообщало что почта wordpress@вашдомен неправильная, ее как бы нет, поэтому ошибка и в таком духе. Естественно в админке этой ошибки нигде видно не было и если не искать, то и не заметишь что что-то не так.

Я нашел три решения проблемы с не отправкой почты из WordPress, одно из них мне помогло.

Решения
1. Самое простое — нужно создать на хостинге почту вида wordpress@вашдомен, некоторым такое помогает, это решение в несколько кликов, но у него есть небольшие недостатки. Расскажу подробнее.

Сейчас почтовые гиганты (например Google с GMail, MailRU, Яндекс) применяют различные способы борьбы со спамом, например SPF и DKIM. И с этими технологиями вам нужно разобраться и правильно настроить, чтобы письма от вашего блога быстро и четко доставлялись, не попадали в спам да и вообще чтобы не пропадали в никуда.

Чтобы избежать этого всего головняка, проще и возможно правильнее завести отдельный почтовый ящик для блога и отправлять письма используя его.

Плавно подходим к другим вариантам — отправка писем через сторонний SMTP сервер (на примере smtp.gmail.com)


Добавлено: 13.11.2016
Жаль сразу не дописал статью, сейчас многие детали уже подзабыл, но главную идею помню как сделал. Постараюсь дописать, возможно кому-то поможет :-)

2. Правка исходного кода сайта.

Люди добавляют в PHPMailer (wp-includes/class-[phpmailer|smtp|pop].php) поддержку SSL/TLS соединений и прописывают туда данный почты, например, GMail

Я пробовал, у меня не получилось, да и этот метод не очень, ведь при обновлении версии WordPress файл может перезаписаться и придется делать изменения снова.

3. Установка и настройка специального плагина для отправки почты.

Таких плагинов много, я попробовал штуки 4, но корректно заработал только один!

Я уже было потерял веру, надоело пробовать, настраивать плагины, читать описания и получать одно и тоже, однако я не сдался и нашел работающий способ :-)

Точно не помню названия плагинов с которыми не получилось, но это были топовые плагины из рейтинга и из обзоров. Кстати там были комментарии от других пользователей, что не получается отправка, возможно плагины не работали с новой версией Вордпресса.

Я даже создавал в почте GMail API с доступом, но тоже все было напрасно, оказалось можно сделать проще.

SMTP: Failed to connect socket: Unable to find the socket transport “ssl”

Решаем проблему — при отправке почты WordPress выдает ошибку и письма не доходят.

Мне помог плагин XPertMailer.

рабочий плагин для почты WordPress xpertmailer

Самое интересное, что плагин старинный, версия 0.1beta от 2007 года, но он реально работает! В отличии от многих навороченных плагинов, которые я пробовал.

wp xpertmailer info

Вы можете подумать, что я не смог правильно настроить другие плагины, очень вряд ли, так как там нужны были базовые настройки почты — smtp сервер, порт, логин, пароль к почте, ничего хитрого эти параметры у меня есть и вводил я их правильно и не один раз.

С плагином XPertMailer у меня отправка почты получилась с первого раза.

Пришлось немного повозиться с исправлением кодировки, однако все быстро решилось.

Устанавливаем XPertMailer обычным способом — Плагины — Добавить новый — Поиск плагинов — XPertMailer.

Настраиваем и активируем почтовый плагин.

Мой пример для почты Gmail

настройки xpertmailer settings

Можно попробовать отправить себе тестовое письмо.

Немного позже вы столкнетесь, с тем, что письма приходят с неправильной кодировкой русских букв, т.е. в письме кракозябра.

Я начал читать хелпы и мануалы, чтобы найти как исправить кракозябру.

Я заменил одну строку в XPM4\PHP5\MIME5.php и русский тест в теле письма стал приходить правильно.

const MCHARSET = 'utf-8';

Исправляем xpertmailer-advanced-php-mail-engine bad codepage

charset xpertmailer utf-8

После этих не сложных действий блог обрел былую способность рассылать письма с комментариями. Ура!

Поделиться с друзьями или в соц.сетях (спасибо)
Ещё похожие заметки:

2 комментария

serg
Фев 5, 2018 15:24

Подключал через данный плагин внешний смтп сервер, который покупал тут smtp.bz , подключил быстро, все работает! Спасибо! Теперь не болит голова о лимитах на бесплатных серверах!

 
Евгений
Дек 19, 2018 20:59

Спасибо, статья хоть и старая но метод сработал. Уже неделю борюсь с отправкой писем, а толку ноль. Сейчас всё ГУД =))

 

Написать

Копирование информации с сайта возможно только с указанием прямой ссылки - https://nemcd.com