На очередную проблему с BuddyPress убил очередные две ночи 🙂 иногда хочется плакать над теми кто занимается разработкой бесплатного ПО за ЗП 😉
При отправке сообщения от одного пользователя к другому, в BuddyPress следующий механизм:
- Отправить сообщение в БД со всеми необходимыми атрибутами
- Если в настройка пользователя получателя есть «Оповещения о сообщениях» — отправить письмо, и самое ужасное — дождаться ответа от почтового сервера! А тут могут быть проблемы — почтовый сервер может не отвечать или отвечать с кодом.. а пока BuddyPress не поймет, что письмо ушло — к 3-му пункту он не перейдет
- Выдать пользователю отправителю «Сообщение отправлено»
Какие проблемы мы можем получить?
- Не получим сообщение «Сообщение отправлено»
- Пользователь отправитель нажмет очень много раз на кнопку «Отправить» — получим море одинаковых писем в ящике пользователя получателя
Если Вы используете на своем сервере 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