Лечим WORDPRESS от мегаглюка с неотправкой писем

Сегодня копался в коде и решил поэкспериментировать. в итоге покопался в коде файла

wp-includes/class-phpmailer.php и немного подправил код. везде вместо mail и sendmail написал smtp и задал настройки смтп провайдера. тут приведены только измененные строки (— значит пропуск кода)


var $From               = "тут вписал свое мыло";

---

/**
* 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.sibmail.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";

}

Желаю удачи! Мне помогло. отправка мыла при регистрации и вспоминании паролей, а также о новых комментариях стало чуть дольше, но работает!

Проверил работу на (оригинальном английском, моей сборки русской и русской от maxsite.org) wordpress 2.3 / 2.3.1, а также на wordpress mu 1.3

на новых базах все работает, а на моих двух основных (этот сайт и сайт кота) не хочет упорно, только с плагином wpphpmailer все работает. видно где то в базе что то не нравится, т.к. блоги я там обновлял начиная с 2.0.4 перебрал все версии и что то осталось видно :(

UPD проверил на «блоге кота» — экспортировал все записи в XML , залил в новую базу. теперь почта через SMTP ходит нормально. осталось найти разницу в базе…

UPD2  методом нескольких бэкапов и тестов с отключением плагинов был выявлен нарушитель работы: если включен плагин wp_mail_cyr, то отправка писем с помощью моего «хака» не работает вообще. но стоит только отключить плагин как сразу почта начинает работать вся!!!

Связанные записи

65 комментариев на запись “Лечим WORDPRESS от мегаглюка с неотправкой писем”

  1. Lecactus 21 ноября 2007 в 21:52

    обновил статью. нашел причины «не работы метода» на старых моих блогах — смотрите в конце статьи

  2. Антон 22 ноября 2007 в 2:14

    Lecactus, извини за оффтоп! С помощью какого плагина ты делаешь подсветку синтаксиса в своем блоге? У меня был один плагин, но он почему — то на твоей сборке не пашет :(

  3. Lecactus 22 ноября 2007 в 8:04

    С помощью какого плагина ты делаешь подсветку синтаксиса в своем блоге?

    http://wordpress.org/extend/plugins/syntaxhighlighter/

  4. Асер 22 ноября 2007 в 11:35

    Спасибо, с вашей помощью я вылечил этот косяк на 2х блогах своих!

  5. Эдуард 23 ноября 2007 в 0:03

    уважаемый Лекастус! Извините за спам, конечно, но у меня есть вопросы, на которые не могу найти ответа…. Как заставить вордпресс регистрировать блоги вот в этот вид:
    мой сайт.ком/блог? (по умолчанию он пытается сделать блог.мой сайт.ком) И в чем может быть причина того, что аккаунт нового пользователя не создается? Ну, не создается, и все!

  6. Эдуард 23 ноября 2007 в 0:05

    P/S Интересная фишка с флагами стран приходящих юзеров…Для этого есть специальный плагин?:-)

  7. Lecactus 23 ноября 2007 в 9:12

    Эдуард,
    1 я так понял речь идет про WP MU — еще при установке у вас спрашивали как вы хотите размещать блоги на под-доменах или в под-директориях.
    сейчас сменить это можно в wp-config параметр VHOST поставить NO
    2 про флаги — в поиск по блогу! называется ip2nation описание где оно лежит есть на странице плагина useronline

  8. Эдуард 23 ноября 2007 в 12:59

    Большое спасибо!

  9. mikolka 24 ноября 2007 в 22:31

    Lecactus а скажи, пожалуйста как ты вставляешь свою фотку в коммент?

    // извини — не удержался =)

  10. Lecactus 24 ноября 2007 в 23:30

    Lecactus а скажи, пожалуйста как ты вставляешь свою фотку в коммент?

    // извини — не удержался =)

    это же граватар обычный . смотри ссылки под окном комментария
    Добавить/изменить Аватар | Помощь

  11. mikolka 25 ноября 2007 в 1:37

    Да шучу я =) Я каменты прочитал: кто в лес, кто по дрова =)

  12. Lecactus 25 ноября 2007 в 8:00

    Да шучу я =) Я каменты прочитал: кто в лес, кто по дрова =)

    да я почти так и понял. ну не видят наверное форму КОНТАКТЫ для вопросов не по теме постов

  13. Ivan 25 декабря 2007 в 3:03

    регистрация заработала
    но:
    1) в графе от кого все равно пишется wordpress, а не то что я пишу в var $From
    2) восстановить пароль не удается:
    E-mail не может быть отправлен. Возможная причина: сервер не поддерживает функцию mail()…

    3) подобная тема обсуждалась на форуме (возможность выдачи пароля без почты) и закончилась неактивной ссылкой на какое-то решение:
    http://gluek.info/wiki/WordpressPlugins … word?v=895
    В общем это похоже на очередную «черную дыру» wordpress, подобную пропадающему визуальному редактору — никто не знает решения

  14. Lecactus 25 декабря 2007 в 9:35

    регистрация заработала
    но:
    1) в графе от кого все равно пишется wordpress, а не то что я пишу в var $From
    2) восстановить пароль не удается:
    E-mail не может быть отправлен. Возможная причина: сервер не поддерживает функцию mail()…

    3) подобная тема обсуждалась на форуме (возможность выдачи пароля без почты) и закончилась неактивной ссылкой на какое-то решение:
    http://gluek.info/wiki/WordpressPlugins … word?v=895
    В общем это похоже на очередную «черную дыру» wordpress, подобную пропадающему визуальному редактору — никто не знает решения

    чтобы писался обратный адрес/имя свой можно поставить плагин для этого — читать тут http://blog.portal.kharkov.ua/2007/08/23/mail_in_wordpress/#more-10
    кстати у меня на одном блоге на моем сервере работает с помощью этого способа мыло всегда, на втором не работает вообще, но работает с плагином (см ссылку выше).
    «черная дыра или нет» трудно сказать. все проблемы из за настройки серверов так или иначе

  15. andrey 26 декабря 2007 в 22:16

    Тоже повесил блог на сайт и не работает отправка в вордпресс
    Буду щас лечить

  16. Сергей 11 января 2008 в 4:45

    Все намного проще — добавить @ перед wp_mail в процедуре отправки сообщения и все будет работать. Подробнее тут

  17. Lecactus 11 января 2008 в 8:10

    Все намного проще — добавить @ перед wp_mail в процедуре отправки сообщения и все будет работать.

    сегодня попробую на тестовом блоге :)

  18. XerSon 16 января 2008 в 11:42

    Все намного проще — добавить @ перед wp_mail в процедуре отправки сообщения и все будет работать. Подробнее тут

    Поперли Варнинги:
    Parse error: syntax error, unexpected ‘&’ in /www_host/hosts/***/wp-includes/pluggable.php on line 616, 617

    Что посоветуете ПХП прогеры?

  19. Lecactus 16 января 2008 в 12:11

    syntax error, unexpected ‘&’

    а откуда у вас там взялся этот знак? судя по всему там должно быть вместо & g t ; значок >

  20. XerSon 16 января 2008 в 14:05

    а вы по ссылке гляньте

  21. Lecactus 16 января 2008 в 15:57

    а вы по ссылке гляньте

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

  22. XerSon 17 января 2008 в 9:05

    Все описаное выше — не дало результата!
    Что и где еще можно подправить в коде или настройках?

  23. Lecactus 17 января 2008 в 9:28

    Все описаное выше — не дало результата!

    а smtp вариант не катит тоже? кстати на одном хостинге (mchost) я клиенту ставил сайт и там на php4 мыло не уходило вообще, а когда включил принудительно php5 все заработало как часики. может все же настройки хостера кривые?

  24. XerSon 17 января 2008 в 14:12

    Все описаное выше — не дало результата!

    а smtp вариант не катит тоже? кстати на одном хостинге (mchost) я клиенту ставил сайт и там на php4 мыло не уходило вообще, а когда включил принудительно php5 все заработало как часики. может все же настройки хостера кривые?

    smtp — тоже! хостер — http://www.ayola.net

  25. Lecactus 17 января 2008 в 15:14

    smtp — тоже! хостер — http://www.ayola.net

    я бы на вашем месте давно бы сменил его, даже если бы он был сверхвыгоден

  26. XerSon 17 января 2008 в 17:29

    smtp — тоже! хостер — http://www.ayola.net

    я бы на вашем месте давно бы сменил его, даже если бы он был сверхвыгоден

    Ваше предложение? Бесплатный и под WordPress + Mail()

  27. Lecactus 17 января 2008 в 17:53

    Бесплатный и под WordPress + Mail()

    vagonchik.com например (вроде не было жалоб на него)

  28. els 22 февраля 2008 в 23:20

    а глюк с обрезкой или с неправильными символами в уведомлениях по почте откуда может взяться? пример заголовка письма:
    [имя сайта] пожалуйста, промо�криншотов на PSP»

  29. Lecactus 22 февраля 2008 в 23:23

    а глюк с обрезкой или с неправильными символами в уведомлениях по почте откуда может взяться? пример заголовка письма:
    [имя сайта] пожалуйста, промо�криншотов на PSP»

    у меня также. я не победил. это с кодировкой UTF8 так получается в теме писем.

  30. Sinkler 1 марта 2008 в 2:31

    Спасибо, пригодилось. Кстати, на ayola все работает, там просто вручную smtp надо запрашивать через админов.

  31. Vadim 22 марта 2008 в 1:38

    Короче в чем у меня ситуация: почта для домена на котором стоит блог была перенастроена на GoogleApps и после этого все письма и уведомления с блога отлавливается только хосте, а в мой e-mail они не попадают.
    И не помогает не один из описанных решений :(

    Бен, это Данила. Ай ниид хелп ;)

  32. Сергей Цепелев 25 марта 2008 в 18:59

    Такой вопрос, почта уходит, все нормально. Но если в настройках WordPress выбрать «Роль нового пользователя (по умолчанию)», как Автор, то при регистрации письмо с паролем не уходит, пробовал все описанные способы, ничего не помогает. Может так все и было задумано, для того, чтобы только администратор мог назначить роль пользователю?

  33. Lecactus 25 марта 2008 в 19:11

    Такой вопрос, почта уходит, все нормально. Но если в настройках WordPress выбрать «Роль нового пользователя (по умолчанию)», как Автор, то при регистрации письмо с паролем не уходит, пробовал все описанные способы, ничего не помогает. Может так все и было задумано, для того, чтобы только администратор мог назначить роль пользователю?

    что то я сильно сомневаюсь. похоже это «еще один баг»

  34. Сергей Цепелев 25 марта 2008 в 19:22

    Хм, не уходит именно на почту Gmail и GoogleApps, на ящик того же хостинга, спокойно доставляется.
    Сорри подписчику на Gmail тоже не доходит((((

  35. олег 13 мая 2008 в 0:38

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

  36. Lecactus 13 мая 2008 в 0:40

    «класс» в новой версии этот же, я просто взял файл из бэкапа 2.3.3 и поставил в 2.5.1

  37. BigJul 26 июня 2008 в 22:51

    Господа, можно «лечить» на много проще!

    Ошибка лишь в том, что посылаются два письма подряд (Админу, а затем пользователю) без паузы. Добавляем sleep(2) между посылками писем в файле wp-includes\pluggable.php (функция «wp_new_user_notification») и будет Вам счастье!

  38. Lecactus 26 июня 2008 в 23:30

    Ошибка лишь в том, что посылаются два письма подряд (Админу, а затем пользователю) без паузы

    ну то что при восстановлении пароля админа приходит ОДНО мыло тут ничто не поможет. почему то при использовании ВНЕШНЕГО smtp сервера все работает

  39. CyberMax 2 июля 2008 в 5:58

    А ещё причиной неотправки писем может быть бан IP адреса хостера почтовыми серверами. То есть они то системой отправляются но до места назначения не доходят. Так например у меня на одном хостинге почта отправлялась и доходила отлично, а с другого хостинга с такой же версией WordPress, где все файлы один в один без изменений, почта доходила только на YahooMail и Gmail, а на Яндекс и MAIL.RU нивкакую.
    В итоге после обращения к хостеру, прочел внимательно те письма о неотправке что приходят на почту хостера (собственно рассказ для тех кто как и я на эти письма не обращает внимания :) ), оказалось что этими почтовиками забанен IP адрес моего хостинга. В письме о неотправке от MAIL.RU даже ссылка есть для запроса на снятие бана. После моего запроса MAIL.RU снял бан буквально через час, а Яндекс, после моего письма, через три дня с ответом что IP моего хостинга удален из списка динамических сетей (как-то так было написано). С получением почты с моих сайтов на эти почтовые сервисы стало всё нормально.
    Остался вопрос что делать с остальными? Например на почту моего интернет провайдера письма с моих сайтов так и не приходили. Проверил здесь http://2ip.ru/spam.php (проверка долго длится) IP своего хостера и IP тот что был в письмах о неотправке (тоже хостера только немного другой) на наличие в СПАМ базах и эти IP по всем базам «Not listed». Или это не те базы или среди них просто нет базы которая стоит у моего интернет провайдера, а также наверное ещё на многих почтовых серверах.
    Вобщем в таком случае бан можно обойти с помощью плагина XPertMailer в котором можно настроить отправку почты через свой аккуант на Gmail. И ещё как вариант это покупка выделенного IP для хостинга :)

  40. Yury 16 сентября 2008 в 3:09

    у меня вот тоже админу не отправляются. для версии 6.2 подходит данное лечение? или, может естьдругой метод?

  41. Lecactus 16 сентября 2008 в 7:59

    @Yury: в моей сборке 2.6.2 поверпак лежит плагин wp-mail-smtp.работает

  42. Yury 16 сентября 2008 в 13:48

    Lecactus, плагин активировал, хост, логин, пароль, настроил. включил смтп авторизацию. тестовое письмо по логу уходит, но на самом деле ничего не получаю на ящик. может у хостинга что-то не так?

  43. Lecactus 16 сентября 2008 в 14:28

    @Yury: оно уже «не так» если не уходит штатным образом

  44. Yury 17 сентября 2008 в 3:41

    Lecactus, письма стал получать :) зато теперь после одобрения коммента он не пропадает из списка неподтверждённых :) я начинаю любить wordpress

  45. Fil 21 июня 2009 в 19:20

    Может быть не в тему, но когда я поставил wpPHPMailer с отправкой писем проблему решил, но теперь все письма приходят такого вида:
    п п п п п я ! п п п п п п !п п п п п п
    Как настроить кодировку?

  46. Fil 21 июня 2009 в 19:39

    Пробывал ставить плагин wp_mail Cyrillic, меня кодировку отправяемых писем, но не помогает

  47. all4life 16 июля 2009 в 6:39

    Излечился от этой головной боли установив плагин — WP-Mail-SMTP

  48. ZradeG 20 августа 2009 в 7:33

    Не отправляется почта ни при регистрации, ни при вспоминании пароля. Пробовал править файл, как тут указано, не помогло. До того пробовал ставить wp-mail-smtp и единственное, где отсылалось — это проверка внутри настроек плагина, но все прочие реально необходимые места, где нужна отправка почты так и не заработали.
    Если отключить все плагины и попробовать получить восстановление пароля, то выдается такое сообщение:

    Письмо не может быть отправлено.
    Возможная причина: сервер не поддерживает функцию mail()… Обратитесь к техподдержке вашего хостинга

    При выключении всех плагинов и включении одного только wp-mail-smtp и последующей попытке отослать восстановление, выдается то же сообщение, но тестовое письмо из настроек плагина продолжает отправляться.
    Подскажите, плз, куда копать?

  49. БезМозгоFF 9 октября 2009 в 18:14

    собственно по моему опыту этот мега глюк лечиться созданием на сервере почтового ящика вида:

    webmaster@domain.ru

    после этого почта начинает отправляться и ошибка перестает возникать.

    (где то еще видел про создание ящика вида wordpress@domain.ru но мне не пригодилось)

  50. Сергей 4 марта 2010 в 11:04

    А на локальном сервере будет работать отправка писем или только на удаленном сервере это возможно? И еще у меня проблема с отправкой комментариев к заметкам… Где можно про это спросить?…

  51. flat4er 19 марта 2010 в 13:34

    Сделал, как написано. Помогло. Спасибо большое.

    локальный сервер. Версия WP 2.9.2

    З.Ы: сейчас бы еще понять, как сделать адрес отправителя не wordpress@domain.ru, а, на пример, admin@domain.ru

  52. Damian 14 апреля 2010 в 17:49

    Во-во, как сделать так, что бы писмо приходило не от WordPress, а от Администрации, например?

  53. Damian 14 апреля 2010 в 17:50

    Уже весь интернет перерыл.

  54. Sat 19 сентября 2010 в 17:33

    Попробовал отредактировать этот файл, так же попробовал 2 указаных палгина в комментах, так ни чего и не помогло, при регистрации блога, не приходят сообщения с активацией. Сервер свой, версия wp 2.7.1 Если кто понимает в чём причина помогите, готов принять помощь за небольшое вознаграждение.. =)

  55. dobrovoi 8 октября 2010 в 18:27

    Очень хорошо справляется с этим неприятным глюком WP, простой плагин Configure SMTP. Настраивается очень легко, вопрос с неотправкой писем отпал, ковырять код нигде не надо. Плагин не «раскрученный», без наваротов, скромно делает свою работу.

  56. Оля 26 ноября 2010 в 3:25

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

    Помогите, пожалуйста!

  57. Оля 26 ноября 2010 в 4:11

    Поменяла код, как у тебя написано, и вот что мне выдал вордпресс:
    «Сообщение не удалось отправить.
    Возможная причина: сервер не поддерживает функцию mail()…»

    Что делать?=(

  58. Den 18 декабря 2010 в 4:14

    После внесения всех правок по твоей инструкции WP продолжает отдавать мне эту же ошибку:

    Сообщение не удалось отправить.
    Возможная причина: сервер не поддерживает функцию mail()…

  59. lex 11 октября 2011 в 11:38

    не у всех есть smtp ) но оно и не нужно, как выяснилось.
    у меня почта заработала после указания несуществующей почты, но на существующем хосте. До этого молча не отправлялось.
    ...
    public $From = 'noreply@[тут был мой сайт].ru';
    ...

Трэкбеки и пингбеки

  1. mamanov · Настраиваем оповещение на email или чиним ошибку mail()
  2. My blog » Проблема с блогом
  3. Wordpress- как настроить отправку почты, email, smtp, не отправить |
  4. WordPress не отправляет письма | PHP Junior - статьи о PHP для начинающих
  5. WordPress не отправляет письма? | Еще один блог на WordPress
  6. WordPress не отправляет письма | PHP Junior - всё о WordPress