Некоторое время назад я размещал материал, посвященный Ошибке, связанной с добавлением новых сообщений в гостевую книгу Phoca GuestBook для Joomla. В тот раз проблема была связана с использованием почтового сервиса Яндекс.Почта для домена, который в целях безопасности не позволяет отправлять письма с адресом отправителя, отличным от адреса, под которым осуществляется соединение (отправка ведется по протоколу SMTP).

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

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

Разобраться в проблеме все никак не хватало времени, да и проблема была неочевидной до тех пор, пока я не столкнулся сам с ошибкой при попытке добавить новый материал не от имени администратора а другого пользователя (который был создан для тестирования возможностей автора в системе Joomla). Итак, я заполнил все поля, добавил материал и нажал на кнопку Сохранить материал... и вот тут вылезла ошибка:

Ошибка в перечисленных адресах отправителей: Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.
Ошибка SMTP: 5.7.1 Sender address rejected: not owned by auth user.

И тут я вспомнил о проблеме с Phoca Guestbook, о которой писал ранее и до меня вдруг дошло, почему перестали приходить уведомления о новых авторских статьях.

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

И всё. Я получаю ошибку:

Ошибка SMTP: 5.7.1 Sender address rejected: not owned by auth user

Примерно час ушел на поиски решения. Поначалу я пытался найти код отправки сообщения непосредственно в компоненте com_content, но в конце концов оказалось, что копать нужно непосредственно в компоненте сообщений com_messages. Итак открываем файл administrator/components/com_messages/models/message.php и меняем строку:

            JFactory::getMailer()->sendMail($fromUser->email, $fromUser->name, $toUser->email, $subject, $msg);

на

            $app = JFactory::getApplication();
            JFactory::getMailer()->sendMail($app->getCfg('mailfrom'), $fromUser->name, $toUser->email, $subject, $msg);           

Где $app->getCfg('mailfrom') - это обратный почтовый адрес, который Вы используете в настройках Вашей Joomla!, для подключения к серверу smtp.yandex.ru на сервисе Яндекс. Почта для домена.

Всё. Письма стали приходить.

Comments   

0 # Joomla 2.5.14Guest 2013-10-16 21:15
Joomla 2.5.14. Нет такого текста в указанном файле.
Reply | Reply with quote | Quote | Report to administrator
0 # Есть в Joomla 2.5.14Ecolora 2013-10-16 22:20
Только что проверил в 2.5.14. Код есть. 302 строка в указанном мной файле. Может Вы не в administrator/c omponents а просто в каталоге components ищите?
Reply | Reply with quote | Quote | Report to administrator
0 # RE: При добавлении новой статьи (материала) в Joomla: Ошибка SMTP: 5.7.1 Sender address rejected: not owned by auth userGuest 2013-10-16 22:29
Да, действительно есть. Спасибо. Жалко, только не помогло.

Яндекс рекомендует еще настроить SPF-записи - http://help.yandex.ru/pdd/records.xml#spf

Сейчас изменения в DNS пропишутся, посмотрим что изменится.
Reply | Reply with quote | Quote | Report to administrator
0 # Должно помочьEcolora 2013-10-17 00:22
По идее именно в этом месте инициируется уведомление по электронной почте на Ваш адрес о том, что добавлена новая статья на сайт.
Reply | Reply with quote | Quote | Report to administrator

Add comment


Security code
Refresh