Очень большая проблема с mail (phpmailer, sendmail)

Проблема №1
На почту не приходят никакие сообщения от WordPress. Ни о регистрации нового пользователя, ни пароль новому пользователю, ни "востановление" пароля. Не работает также отправка сторонними плагинами (db-backup, subscribe-to-comment).

Характеристики:
Блог – WordPress 2.3 by Maxsite.org
Хостинг – GoDaddy.com Unix
Апгрейд прошёл успешно сбоев не было. База данных работает нормально. Никаких проблем, кроме…

Когда?
Проблема появилась неизвестно когда, неизвестно откуда. Где-то между апдейтами:
2.2 Mywordpress.ru – 2.2.3 Mywordpress.ru – 2.3 Maxsite.org
Скорее всего после апдейта "с 2.2 до 2.2.3", но не уверен.

Попытки
1. Отключение всех плагинов и активация дефолтного шаблона – не помогли
2. Нет плагинов, дефолтный шаблон, активен плагин subsribe-to-commentкомменты не приходят

Вопрос
Что произошло? Кто виноват? И что делать?

Решение
Установка плагина wpPHPMailer (от Lecactusa) устранила эту проблему. Причем – активации плагина было достаточно, SMTP не включал, работает обычный sendmail().

Но почему перестал работать встроенный phmailer в wordpressе? Почему перестала ходить почта?

Проблема №2
После включения плагина wpPHPMailer, почта ходит но с "??" в полях "FROM" (от кого) и Subject (тема). Иногда в FROM не ??, а арабский и другие символы.

Попытки
Отключение всех плагинов, кроме wpPHPMailer проблему не решили.
wp_mail Cyrillic – не помогает в любой кодировке.
Novikov’s FROM Kryakozjabri Bugfix – не помогает
PL UTF-8 Notify Mail – Помогает, сообщения от WordPress-а приходят нормальные, а от subscribe-to-comments, по-старому, с кракозябрами. Важно: Но он не работает без wpPHPMailer-a — посылает сплошной BASE64 (буквочисловой код),.
Также пытался чередовать настройки этих плагинов – бесполезно.

Почта есть = кракозябры убивают
Кракозябров нет = почта умирает

ПОМОГИТЕ, пожалуйста. Пожалейте мой воспалённый мозг и красные глаза - ночи не сплю, не могу решить эту "загадку"... А уже 04:41...

А что на GoDaddy обычная mail не работает?

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

mayuxi – http://lecactus.ru/2007/10/12/868 – в плагине wpPHPMailer надо там одну строку заменить чтобы было по русски

в файле class.phpmailer.php редактируй строку

var $CharSet = "utf-8";

Та же проблема… даже хостинг аналогичный.

в файле class.phpmailer.php редактируй строку
var $CharSet = "utf-8";

Странно, при редактировании этой строки вобще ничего не меняется. Заголовок так и приходит каракозяблями %)

А что на GoDaddy обычная mail не работает?

Хрен их знает. GoDaddy крупнейший хостер в мире, а у них mail не работает?! Очень странно. Но похоже на то. Так по чему же, когда подключаешь сторонний phpmailer всё начинает работать (хотя в принципе ничего не меняется? я же не подключаю smtp)

mayuxi - http://lecactus.ru/2007/10/12/868 - в плагине wpPHPMailer надо там одну строку заменить чтобы было по русски

в файле class.phpmailer.php редактируй строку

var $CharSet = "utf-8";

Lecactus, уважаемый, я и есть Мальцев Александр, с которым Вы общались в комментах. Ничего не выходит. Мне редактировать строку var $CharSet = "utf-8"; не выход. Блог у меня многоязычный, на китайском общаются люди, так если указать другую кодировку, то китайский вообще пропадёт. Настройка smtp – не помогает, либо выходит ошибка при отправке пробного коммента (по памяти: opensocket(): cannot connect to smtp.xxxxxxxxx.:25 … smtp.class.php on line 105). Пробывал разные smtp – либо ничего не приходит на почту, либо ошибка – см. выше.

Та же проблема... даже хостинг аналогичный.

Может в саппорт ГоДадди напишем? Я попробую, но у меня английский не очень 😉
А версия WP таже? Когда всё случилось? Недавно?

Та же проблема... даже хостинг аналогичный.

Может в саппорт ГоДадди напишем? Я попробую, но у меня английский не очень 😉
А версия WP таже? Когда всё случилось? Недавно?

Да по логике все должно работать…. у меня на основном сайте, есть форма отправки мыла. Все прекрасно работает, без сбоев…

А с суппортом… напишите, они всегда отвечают. Английский у меня тоже так себе.. =) Подождем, чего ответят вас.

WP версии 2.2.3
Когда началось… раньше просто не пользовался всеми этими фичами.. а тут вот понадобилось и регистрацию сделать и подписку на коментарии… и сразу не заработало. Поэтому не могу сказать когда это началось.

Что самое интересное, админский пароль то пришел без проблем…

Так у меня изначалально было всё тихо и спокойно. Более того, письма отправляемые через cformII – приходят.

Я думаю, что нам с Вами нужно объединить усилия и написать в support. Чтобы они отреагировали. Я как вернусь домой – напишу (сегодня вечером).

Я понял:
Приходят письма только от тех плагинов, в которых уже установлен phpmailer:
email users, cformsII и др.
Там же где его нет и вообще, просто WordPress – ничего не приходит.

Что самое интересное, админский пароль то пришел без проблем...

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

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

Кстати, в Вашей сборке wpPHPMailer (1.6.1 rus, на сколько я помню) – phpmailer стоит 1.7.2, а последний стабильный релиз был уже в июле – 1.7.3. Может поменять?
Кстати, в WP2.3 всторенный PHPMailer (wp-includes/class-phpmailer.php) уже этой версии 1.7.3

Может как-нибудь объединить усилие на устранение этой распространённой ошибки (кракозябры в письмах и уведомлениях о комментах). Есть замечательные плагины:
wp_mail Cyrilliс
Novikov’s FROM Kryakozjabri Bugfix
PL UTF-8 Notify Mail
Но все они устраняют проблему на половину. Последний плагин, например, только чинит письма от WordPress-а, а от плагинов – нет.

в WP2.3 всторенный PHPMailer (wp-includes/class-phpmailer.php) уже этой версии 1.7.3
только почему же он через смтп не научился посылать…
а плагин я качал с оффсайта в тот же день что и выкладывал русский. новее не видел

Новый phpmailer можно скачать с офсайта – phpmailer.sourceforge.net
(Новый это последний, т.е. июльский стабильный релиз).

А то что WordPress не умеет посылать smtp изначально – это его создатели не "учили". Хотя Phpmailer это может (он там не урезанный, обычный.)

Была проблема с плагином Secure Form Mailer Plugin For WordPress 5.33

WordPress – UTF-8
БД – UTF-8

Часть письма отображалась нормальным русским языком, а часть кракозяблами.
Пример:

Ваше имя: ScorpAL

Ваш e-mail: scorpal@gmail.com

Тема: testing of site ????????????? ????????????? ?? ??? ??

Сообщение: test ????????????? ?? ?? ?? ???? ???

Решение проблемы:
Меняем в файле /plugins/dd-formmailer/dd-formmailer.php

$msg .= ‘Content-Type: text/plain; charset="iso-8859-1"’ . PHP_EOL; (строка #304)

на

$msg .= ‘Content-Type: text/plain; charset="utf-8"’ . PHP_EOL;

Теперь все приходит корректно.

Ну это понятно, плагин сам указывал в какой кодировке письма отправлять. Но в subscribe to comment берёт кодировку из блога:

        // strip out some chars that might cause issues, and assemble vars
        $site_name = str_replace('"', "'", $this->site_name);
        $site_email = str_replace(array('<', '>'), array('', ''), $this->site_email);
        $charset = get_settings('blog_charset');

        $headers  = "From: \"{$site_name}\" <{$site_email}>\n";
        $headers .= "MIME-Version: 1.0\n";
        $headers .= "Content-Type: text/plain; charset=\"{$charset}\"\n";
        return wp_mail($to, $subject, $message, $headers);

А если ему явно укзать?

$charset = ‘utf-8’;

И вобще покрутить кодировки. Не получится?

ТОварищи, вот что писали на офф.сайте:

Оповещение по email не работало на хостингах, проверяющих адрес отправителя письма (должен принадлежать текущему домену).

Чтобы пофиксить обновляемся до 2.3.1 beta (там же список остальных фиксов).
Либо делаем вот что:
добавляем в файле pluggable.php строку

$phpmailer->Sender = "wordpress@" . preg_replace('#^www\.#', '',strtolower($_SERVER['SERVER_NAME']));

перед

$phpmailer->FromName = "WordPress";

Тарас, сделал как написано – не помогло.
Может быть проблема в том, что у меня WP 2.2.3?

Или, видимо, всетаки гоудэди шалит %)

Что-то я в Pluggable не нашёл такую строку

Более подробно покопал ветку трэкинга.
Предложеный мною вариант по идее должен работать как раз для 2.2.х ветки, а для 2.3.x нужно перед

$phpmailer->FromName = apply_filters( 'wp_mail_from_name', $from_name );

в том же файле добавить

$phpmailer->Sender = apply_filters( 'wp_mail_from', $from_email );

Странно, но к 2.2.3 фикс они не выкладывали.

mayuxi, ну как на 2.3 заработало? С учетом фиксов, описанных выше…

У меня буквально сегодня будет русская сборка WordPress 2.3.1 beta (та которая последняя). Так что можно будет потренироваться на ней.

Да, почта о регистрации нового пользователя приходит (но с "вопросиками", как обычно).
О новых комментах – та же история (заголовок и отправитель – кракозябры и ??)
Но почта приходит и ладно, я решил временно на это забить.
Буду ждать выхода какого-нибудь вордпресса 3.0 или 7.5.9 где будет устранена, наконец, этот старейший баг…

Тот же хостинг, сцуко. После всех поправок из этой ветки пишет:

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

Надеюсь, 2.3.1 поможет.

Edit: в каком месте можно поменять сообщение об ошибке почты? Я хотя бы туда впишу свой адрес чтобы пользователи писали мне для ручной активации акаунта.

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

Включи wp-phpmailer и оставь в настройках "использовать встроенную функцию WP".
Тогда почта ходит но в заголовках кракозябли. Лучше уж так… чем никак

Заработало с РНРмейлером – спасибо ЛеКактусу за адаптацию. И спасибо за совет, tmc_angel. Кракозябры – частично.

Пардон – но нет времени ковырять код – остаётся один "плевок" до идеальной работы: кто-нибудь знает – где заменить заголовки писем при регистрации и восстановлении пароля? Я бы просто домен туда всунул – вполне логично и без иероглифов…

Поскольку уважаемые "мастера" адекватного ответа не дали, хотя, я думаю, что дело плёвое. Есть несколько плагинов, которые устраняют эту проблему на половину: удаляют кракозябры админских писем и кракозябры заголовков о регистрации. Я думаю, что тот, кто знает хорошо PHP (я к таким не отношусь) может легко решить эту проблему, или скопировать решение из этих плагинов (Novikov’s FROM Kryakozjabri Bugfix, PL UTF-8 Notify Mail)….

ВОТ КАК Я "РЕШИЛ" ЭТУ ПРОБЛЕМУ

— Чтобы заходила почта:
устанавливаем плагин wpPHPMailer (любую версию, можно Лекактуса).

— Чтобы пропали кракозябры из заголовков админских писем:
Берём плагин Novikov’s FROM Kryakozjabri Bugfix и выкидываем на свалку по двум причинам:
1) Не всем помогает
2) Заменяет русифицированные письма на английские.

Берём и устанавливаем плагин PL UTF-8 Notify Mail – всё, админская почта приходит без кракозябр.

— Чтобы комменты от subsribe to comments не были с кракозябрами (тема и "от кого").
Берём и чиним плагин subscribe-to-comments.php, нас интересуют строчки где есть (пишу по памяти, с собой сейчас файла нет):

#subject = ….
Меняем вызов названия блога на адрес блога:
$subject = ‘[Magazeta.com] ‘ . $subject; // естественно нужно свой блог вписывать

Меняем русификацию и вызов темы поста:
$subject = ‘Новый комментарий: %s’; ….

на New Comment:
$subject = ‘New Comment’

Ещё осталось найти поле FROM и заменить его на:

FROM: Magazeta.com <ma@magazeta.com>

———

Короче, смысл: избегать в теме и заголовке вообще русских символов до лучших времён.
Я попытался совместить плагины PL UTF-8 Notify Mail и Subscribe to Comment, просто ради эксперимента.
Добился особых результатов (НАПРИМЕР: русское название блога без кракозябр, но тема поста – сплошные вопросики). Поэтому решил:
Не можешь какать, не мучай попу.

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

А iconv применительно к тексту сообщения не пробовали прицепить?

Берём и устанавливаем плагин PL UTF-8 Notify Mail - всё, админская почта приходит без кракозябр.

У меня, к сожалению, не помогло =(
Поэтому как тут верно заметили, подскажите люди добрые, в каком файлике идут стандартные заголовки уведомлений WP. Действительно, поменяю их руками.

Матрицу читаю, а PHP не умею…

Не пробывал, функции не знаю. Пробывал всякие encode/decode base64, unicode… но устал мучиться…

Короче долго я разбирался в этом баге mail() и все выяснил, кому интиресно милости прошу http://mamanov.com/yes-mail-wp/

http://lecactus.ru/2007/11/21/1021 нашел вариант решение проблемы!

Anonymous
Отправить
Ответ на: