WordPress не отправляет почту — Решено
Заметил что перестали приходить письма от WordPress блога.
Решил разобраться в чем же дело.
И то что я увидел меня немного расстроило.
Ранее я всегда считал что 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.
Самое интересное, что плагин старинный, версия 0.1beta от 2007 года, но он реально работает! В отличии от многих навороченных плагинов, которые я пробовал.
Вы можете подумать, что я не смог правильно настроить другие плагины, очень вряд ли, так как там нужны были базовые настройки почты — smtp сервер, порт, логин, пароль к почте, ничего хитрого эти параметры у меня есть и вводил я их правильно и не один раз.
С плагином XPertMailer у меня отправка почты получилась с первого раза.
Пришлось немного повозиться с исправлением кодировки, однако все быстро решилось.
Устанавливаем XPertMailer обычным способом — Плагины — Добавить новый — Поиск плагинов — XPertMailer.
Настраиваем и активируем почтовый плагин.
Мой пример для почты Gmail
Можно попробовать отправить себе тестовое письмо.
Немного позже вы столкнетесь, с тем, что письма приходят с неправильной кодировкой русских букв, т.е. в письме кракозябра.
Я начал читать хелпы и мануалы, чтобы найти как исправить кракозябру.
Я заменил одну строку в XPM4\PHP5\MIME5.php и русский тест в теле письма стал приходить правильно.
const MCHARSET = 'utf-8'; |
Исправляем xpertmailer-advanced-php-mail-engine bad codepage
После этих не сложных действий блог обрел былую способность рассылать письма с комментариями. Ура!
Подключал через данный плагин внешний смтп сервер, который покупал тут smtp.bz , подключил быстро, все работает! Спасибо! Теперь не болит голова о лимитах на бесплатных серверах!
Спасибо, статья хоть и старая но метод сработал. Уже неделю борюсь с отправкой писем, а толку ноль. Сейчас всё ГУД =))