- Joomla рассылка писем не работает
- 1. Вы настраиваете модуль обратный связи, отправку почты и тп на локальном сервере.
- 2. Вы получаете письма на yandex или mail почту.
- 3. Проблемы с PHP Mailer.
- 4. Проблемы с хостингом.
- Не отправляется почта с сайта joomla
- PHP mail function
- Настройка SMTP
- Настройка Sendmail
- Настройка отправки почты через SMTP на Joomla
Joomla рассылка писем не работает
В этой статье мы рассмотрим проблемы, возникающие с отправкой почты на CMS Joomla.
Наиболее часто встречаются ошибки вида «Could not instantiate mail function.» и «Не удалось вызвать функцию mail», также бывают случаи, когда никакой ошибки не отображается, тем не менее письма не приходят на почту. На всех этих случаях мы остановимся подробнее далее, если у вас возникают проблемы с отправкой почты по протоколу SMTP, то вам будет полезна эта статья.
Ошибки, описанные выше, могут быть вызваны рядом причин. В этой статье я попытался систематизировать информацию по проблемам с отправкой писем на Joomla и их решениям.
1. Вы настраиваете модуль обратный связи, отправку почты и тп на локальном сервере.
На локальных серверах вроде Denver или WAMP по умолчанию стоят заглушки, которые препятствуют отправке писем. Как правило, после переноса сайта на хостинг эти проблемы пропадут.
2. Вы получаете письма на yandex или mail почту.
Эти почтовые службы с большим подозрением относятся к получаемым сообщениям. Если, например, ваш сайт висит на одном IP c рассыльщиками спама, велика вероятность, что и вы попадете в список подозрительных отправителей и будете получать сообщения в папку спам либо с большой задержкой либо сообщения в принципе не будут доходить. Как можно решить эту проблему? Ниже мои советы от простого к сложному.
2а. Если письмо нашлось в спаме, просто добавьте адрес с которого оно пришло в адресную книгу, после этого письма начнут приходить в основные папки.
2б. Настройте отправку через SMTP . Это можно сделать буквально за 5 минут, инструкцию можно найти здесь. На мой взгляд самый простой и надежный способ.
2в. Если отправка через SMTP вам не подходит , можно попробовать создать ящик на вашем хостинге, он будет выглядеть примерно так название_ящика@ваш_домен.ru и добавить его в поле email-сайта на вкладке сервер. Почтовый сервер будет видеть в исходящих почту с вашим доменом и траст письма повысится. Сделать это можно в панели администратора, «System->Global configuration» («Система->Общие настройки»). В этом разделе открыть вкладку Server (Сервер) и в правом нижнем углу найти настройки отправления почты.
2г. Настройте spf. Spf это верификация вашего домена, настраивается на хостинге за пару минут при наличие инструкции. Так как я не знаю ваш хостинг, то инструкцию вам придется найти самостоятельно, обычно достаточно набрать в поиске что-то вроде «spf beget» (бегет это мой хостинг) и открыть первую ссылку. Перед гуглением можно попробовать посмотреть здесь, там размещены настройки для кучи популярных хостингов.
2д. Настроить DKIM. DKIM это цифровая подпись, настраивается тоже по инструкции хостинга, но в отличие от spf услуга может быть платной. Перед приобретением рекомендую вам связаться со своим хостером и уточнить возможные причины не прихода писем.
3. Проблемы с PHP Mailer.
Довольно распространенный случай. В Joomla предусмотрено 3 механизма отправки писем: PHP Mail, Sendmail и SMTP. По-умолчанию используется первый и с ним зачастую бывают проблемы. Ниже я предлагаю несколько путей решения проблемы.
2a. Самый простой способ решить проблему, это изменить способ отправки на Sendmail. Для этого в панели администратора надо перейти в «System->Global configuration» («Система->Общие настройки»), где открыть вкладку Server (Сервер). Справа внизу вы увидите настройки почты, в поле «Mailer» («Способ отправки») в выпадающем списке надо выбрать «Sendmail». Можно также поменять способ отправки на SMTP, как это сделать читайте здесь.
3б. Также можно попробовать починить PHP Mailer вручную . Для этого надо найти и открыть файл:»корень сайта/libraries/phpmailer/phpmailer.php» или «корень сайта/libraries/vendor/phpmailer/phpmailer/class.phpmailer.php» для поздних версий джумлы. Далее найти строчку:
$params = sprintf(‘-oi -f %s’, $this->Sender);
Вероятный номер строки 707 или 1161. И дописать под ней:
Ваш код теперь выглядит так:
$params = sprintf(‘-oi -f %s’, $this->Sender);
Или в случае более поздней версии заменить искомую строку:
Код:
$params = sprintf(‘-f%s’, $this->Sender);
Меняется на:
$params = sprintf(‘-f%s’);
4. Проблемы с хостингом.
Возможно вы используете бесплатный тариф, на котором закрыта отправка писем или он включает этот функционал по требования. Как бы то ни было, вам нужно написать в службу поддержки и объяснить проблему.
Источник
Не отправляется почта с сайта joomla
Проблемы с отправкой почты частенько возникают при переносе сайта с localhost (локального компьютера) или хостинга на хостинг. Причин этих проблем несколько и скрыты они могут быть как в настройках сервера, так и настройках самой joomla . Отсюда и вариантов решения тоже несколько и на вскидку нельзя сказать, какой подойдет именно вам. Я после установки сайта на хостинг сразу проверяю работоспособность отправки почты.
PHP mail function
По умолчанию в joomla почта отправляется через PHP mail function. Для этого PHP mail function должна поддерживаться сервером.
Проверяем, поддерживается или нет, создаем файл, например, mail.php со следующим кодом:
где Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра. — адрес электронной почты, на которую вы хотите получить письмо.
Кидаем файл в любую директорию своего сайта, для чистоты эксперимента выставляем на него права 777 (или передаем его во владение пользователя, наделенного всеми правами — Апач или www-data или тому подобным ) .
Выходим на mail.php через браузер. Видим чистый лист, но смущать это не должно, озадачиваться будем, если, проверив указанный почтовый ящик, мы не обнаружим там письма с темой subject и содержанием hello. Если письмо пришло — PHP mail function работает. Если письмо не приходит — проверяем папку «спам», может оно там (на gmail папка спам по умолчанию скрыта), ну а если и там нет — PHP mail function на сервере нет или какие-то косяки с его настройкой. Обращаемся к хостеру, если настроят — идем дальше, если нет возможности использовать PHP mail function на данном хостинге — меняем хостера используем альтернативные способы отправки почты (о них ниже).
Если ваш хостинг Masterhost, скорее всего sendmail или php m ail на нем не работают, воспользуйтесь smtp.
Если письма попадают в спам, проверьте, чтобы электронный адрес владельца домена на сервере и почтовый адрес, указанный в configuration.php joomla совпадали и были ни в коем случае не на mail.ru . К слову сказать, для VirtueMart, если ящик в «Установки почты» и в Информация о магазине в разделе «Контактная информация» не один и тот же, почта так же считается спамом.
Далее проверяем, отправляется ли почта через форму контактов joomla . Если нет, проверяем права на файлы /libraries/phpmailer/. 777 выставлять не стоит, лучше присвойте эти файлы пользователю с соответствующими правами. Должно работать.
Проверяем функцию «поделиться ссылкой» или «отправить ссылку по почте», то есть работу компонента com_mailto, частенько именно с ней возникают проблемы и мы видим «Письмо не может быть отправлено».
Уточняем права на папку /components/com_mailto.
Если не помогло, проверяем .htaccess , если вы вносили в него изменения. Нет ли там лишних директив перенаправления? Временно замените свой .htaccess на стандартный из установочного пакета joomla .
И наконец, проблема может быть в /components/com_mailto/controller.php, строка
устанавливает тайм-аут от открытия окна до отправки в 20 секунд, если кто-то заполнит форму раньше, увидит вместо отправки сообщение об ошибке. Уменьшите это значение, но не сильно, иначе придется бороться со спамом.
Если видите «Письмо отправлено», когда оно на самом деле не отправлено, скорее всего неправильно настроена PHP mail function на сервере, обратитесь к хостеру.
Настройка SMTP
Если PHP mail function или sendmail настроить не удается, пользуемся SMTP. Настройка не займёт много времени. Заходим в Общие настройки -> Сервер и ставим там следующие значения в разделе «Установки почты»:
Для ящика на mail.ru :
Способ отправки почты. SMTP server
Адрес отправителя. ящик@mail.ru
Имя отправителя. любое имя
Путь к Sendmail. /usr/sbin/sendmail (по умолчанию)
Использовать SMTP-авторизацию. Да
SMTP порт . 25
SMTP логин. ящик@mail.ru
SMTP пароль. пароль от ящик@mail.ru
Адрес SMTP-сервера. smtp.mail.ru
Способ отправки почты. SMTP server
Адрес отправителя. ящик@ g mail. com
Имя отправителя. любое имя
Путь к Sendmail. /usr/sbin/sendmail
Использовать SMTP-авторизацию. Да
SMTP порт . 25
SMTP логин. ящик@ g mail. com
SMTP пароль. пароль от ящик@ g mail. com
Адрес SMTP-сервера. ssl://smtp.gmail.com:465
Неудобство лишь в том, что количество писем в сутки с почтовых серверов ограничено, на gmail вроде как не более 60, так что если функция отправки почты на вашем сайте будет использоваться слишком часто, для некоторых пользователей она окажется недоступной.
Ошибка PHPMAILER_FROM_FAILED на 1.5 джумле лечится:
находим файл . /components/com_contact/controller.php, в исходном коде меняем:
Настройка Sendmail
Ничего по этому поводу написать пока не могу.
Источник
Настройка отправки почты через SMTP на Joomla
SMTP – простой протокол передачи почты в сетях TCP/IP. В большинстве CMS на PHP штатная функция «mail» не поддерживает отправку на почту сообщений таким способом. Но SMTP можно подключить как дополнительный инструмент.
В этой статье мы рассмотрим, как настроить почту через протокол SMTP на виртуальном хостинге для сайтов с CMS Joomla (на примере Joomla 3.9.22).
Перед тем как перейти к настройке SMTP в самой CMS, нужно создать почтовый ящик. Сделать это можно несколькими основными способами — непосредственно на виртуальном хостинге в настройках панели ISPmanager или на внешних сервисах — Yandex, Google, Mail.ru.
Необходимые настройки CMS
- Перейти в панель администратора сайта. Ввести в браузере «domen.ru/admin», где «domen.ru» — актуальное доменное имя.
- Авторизоваться в панели, введя логин и пароль администратора, и нажать «Войти».
- В левом меню выбрать «Общие настройки».
- Перейти на вкладку «Сервер».
- На открывшейся странице нужно настроить блок «Параметры электронной почты» в правом нижнем углу.
- Выбрать метод отправки почты «SMTP» — напротив пункта «Авторизация на SMTP» и выставить значение «Да».
- Ввести настройки актуального сервера SMTP, заполнив строки: «Имя хоста SMTP», «Порт SMTP», «Безопасность SMTP», «Имя пользователя SMTP», «Пароль SMTP».
Значение этих строк будет зависеть от выбранного почтового сервиса. Поэтому для дальнейшей настройки почты, нужно выполнить ряд дополнительных действий:
- Взять необходимые данные в панели управления хостингом Eternalhost (в настройках почтового сервера) или в настройках популярных почтовых сервисов — Яндекс.Коннект, «Mail.Ru для бизнеса», Google Workspace (пункты 7B-7D). Какую именно информацию брать — указано ниже.
- Вставить скопированную информацию в соответствующие графы меню настройки SMTP-сервера CMS Joomla.
- Если почта создана на виртуальном хостинге Eternalhost, данные о настройках можно посмотреть через панель ISPmanager. Для этого в разделе «Почта» нужно нажать на пункт «Почтовые ящики», выбрать нужный ящик и кликнуть «Настройка».
Какая информация нужна:
- «Имя хоста SMTP» — взять данные из графы «Имя сервера входящей почты».
- «Порт SMTP» — 25.
- «Безопасность SMTP» — Нет.
- «Имя пользователя SMTP» — из графы «Учетная запись».
- SMTP Password («SMTP пароль») — пароль от учетной записи, указанный при ее создании. Посмотреть его можно в разделе «Почта» → «Почтовые ящики» → выбрать нужный ящик → «Изменить». Затем в графе «Пароль» нажать «Показать/скрыть пароль».
Если будет использоваться SSL-порт, то в настройках почтового домена нужно сделать ряд дополнительных действий:
- Установить галочку напротив «Защищенное соединение (SSL)».
- Прописать псевдоним для сертификата.
- Выбрать SSL-сертификат.
В этом случае также потребуется изменить ряд настроек в разделе «Почтовые ящики» самой панели ISPmanager:
- «Порт SMTP» — 465.
- «Безопасность SMTP» — Да.
- Если почта создана на Яндекс.Коннект, потребуется скопировать и вставить в раздел «Параметры электронной почты» настроек CMS Joomla следующую информацию:
- «Имя хоста SMTP» — «ssl://smtp.yandex.ru».
- «Порт SMTP» — 465.
- «Безопасность SMTP» — Да.
- «Имя пользователя SMTP» — созданный ящик.
- «Пароль SMTP» — пароль от созданного ящика.
- Если почта создана на сервисе «Mail.Ru для бизнеса», потребуется скопировать и вставить в раздел «Параметры электронной почты» настроек CMS Joomla следующую информацию:
- «Имя хоста SMTP» — «ssl://smtp.mail.ru».
- «Порт SMTP» — 465.
- «Безопасность SMTP» — Да.
- «Имя пользователя SMTP» — созданный ящик.
- «Пароль SMTP» — пароль от созданного ящика.
- Если почта создана на Google Workspace, потребуется скопировать и вставить в раздел «Параметры электронной почты» настроек CMS Joomla следующую информацию:
- «Имя хоста SMTP» — «ssl://smtp.gmail.com».
- «Порт SMTP» — 465.
- «Безопасность SMTP» — Да.
- «Имя пользователя SMTP» — созданный ящик.
- «Пароль SMTP» — пароль от созданного ящика.
- Нажать «Сохранить» в верхнем меню.
Эта инструкция по настройке почты через SMTP подходит как для веб-хостинга, так и для виртуального сервера. Единственное отличие — в параметрах настроек SMTP-сервера. Для сайта на VPS следует брать информацию из настроек собственного почтового домена, а не данные почтового сервера Eternalhost (пункт 7A).
Начни экономить на хостинге сейчас — 14 дней бесплатно!
Источник