На очередную проблему с 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 исправят алгоритм и исключат возможность возникновения такого рода проблем при проблемах с почтой.. ведь сообщение ушло в БД и можно говорить о том, что оно отправлено..