BuddyPress.. проблема с почтой.. решил :)

На очередную проблему с BuddyPress убил очередные две ночи 🙂 иногда хочется плакать над теми кто занимается разработкой бесплатного ПО за ЗП 😉
При отправке сообщения от одного пользователя к другому, в BuddyPress следующий механизм:

  1. Отправить сообщение в БД со всеми необходимыми атрибутами
  2. Если в настройка пользователя получателя есть «Оповещения о сообщениях» — отправить письмо, и самое ужасное — дождаться ответа от почтового сервера! А тут могут быть проблемы — почтовый сервер может не отвечать или отвечать с кодом.. а пока BuddyPress не поймет, что письмо ушло — к 3-му пункту он не перейдет
  3. Выдать пользователю отправителю «Сообщение отправлено»

Какие проблемы мы можем получить?

  1. Не получим сообщение «Сообщение отправлено»
  2. Пользователь отправитель нажмет очень много раз на кнопку «Отправить» — получим море одинаковых писем в ящике пользователя получателя

Если Вы используете на своем сервере Sendmail, то есть небольшой фикс:

В файле pluggable.php (папка WP MU — wp-includes) найдите строчки:

// Set to use PHP's mail()

$phpmailer->IsMail();

Замените на:

// Set to use PHP's mail()

$phpmailer->IsSendmail();

зы: способ нагуглил (спасибо Jennifer с сайта scriptygoddess.com) и поделился 🙂 а для тех у кого другие сервера — другие фиксы или вариант использовать phpmailer

Проблема самого WordPress MU, но ощущается именно в BuddyPress (и нет только при отправке сообщений, но и при всех действия — где требуется отправить «оповещение»)

Очень надеюсь, что разработчики BuddyPress исправят алгоритм и исключат возможность возникновения такого рода проблем при проблемах с почтой.. ведь сообщение ушло в БД и можно говорить о том, что оно отправлено..

CMS, UNIX