Документация / OpenCart

Отправка почты в OpenCart через SMTP

По умолчанию OpenCart отправляет письма функцией PHP mail(), поэтому на большинстве хостингов уведомления о заказах молча пропадают. Переключение на SMTP — это одна вкладка, но с одной особенностью, на которой спотыкаются почти все: шифрование в OpenCart задаётся префиксом в имени хоста, а не отдельной настройкой.

Логин и пароль можно получить на странице управления токенами домена.

Параметры подключения

ПараметрЗначение
SMTP-хостsmtp.fmailer.ru
Порт587
ШифрованиеSTARTTLS (соединение переводится в TLS до авторизации)
ЛогинЛогин SMTP-токена вашего домена
ПарольПароль этого токена — показывается один раз, при создании
Каждый режим доступен и на высоком порту: 8465 (SSL/TLS), 8587 (STARTTLS) и 8025 (без шифрования). Многие хостинги и облака блокируют исходящие 25, 465 и 587 — если соединение отваливается по таймауту, используйте соответствующий высокий порт

Настройка

Перейдите в Система → Настройки, откройте магазин на редактирование и выберите вкладку «Почта»:

ПолеЗначение
Почтовый движокSMTP
Хост SMTPtls://smtp.fmailer.ru
Логин SMTPЛогин SMTP-токена вашего домена
Пароль SMTPПароль этого токена
Порт SMTP587
Таймаут SMTP5
В OpenCart нет выпадающего списка шифрования — имя хоста уходит в потоковый слой PHP, и транспорт определяется схемой. Используйте tls://smtp.fmailer.ru с портом 587 либо ssl://smtp.fmailer.ru с портом 465. Хост без префикса открывает нешифрованное соединение, и авторизация будет отклонена.

Адрес отправителя

На вкладке «Магазин» той же страницы укажите в поле E-Mail адрес на подтверждённом домене. Личный адрес на Яндексе или Mail.ru не позволит DKIM и SPF сойтись, и чеки будут фильтроваться.

Какие уведомления отправлять

Ниже на вкладке «Почта» блок «Оповещения» определяет, о чём уведомлять владельца магазина — новые заказы, регистрации, заявки партнёров. Письма покупателям управляются отдельно, статусами заказов в разделе Система → Локализация → Статусы заказов.

Проверка

Кнопки проверки в OpenCart нет. Оформите тестовый заказ или запросите восстановление пароля на странице входа покупателя — оба сценария идут через тот же почтовый движок. Если ничего не пришло, смотрите Система → Обслуживание → Журнал ошибок.

Разбор ошибок

СимптомПричина и решение
Error: SMTP connection failed Нет префикса tls:// либо заблокирован порт — попробуйте 8587.
Отказ авторизации Неверные доступы либо соединение нешифрованное из-за отсутствия префикса.
Белый экран при сохранении Подавленная ошибка PHP — чаще всего не включено расширение openssl.
Соединение сразу закрывается Пустое поле таймаута. Поставьте 5.
Владельцу письма приходят, покупателю — нет У статуса заказа не включено уведомление покупателя.
Письма в спамеАдрес магазина не на подтверждённом домене.

Частые вопросы

Где в OpenCart настраивается SMTP?

Система → Настройки → редактирование магазина → вкладка «Почта». Выберите почтовый движок SMTP, после чего станут значимыми поля хоста, логина, пароля, порта и таймаута. В OpenCart 3 и 4 это одна и та же панель.

Зачем перед именем хоста писать tls://?

У OpenCart нет отдельной настройки шифрования. Имя хоста передаётся прямо в потоковые функции PHP, поэтому транспорт выбирается префиксом схемы: tls://хост с портом 587 либо ssl://хост с портом 465. Без префикса соединение открывается нешифрованным, и сервер откажет в авторизации.

Почему OpenCart не отправляет письма о заказах?

Сначала проверьте, что почтовый движок переключён на SMTP, а не на «Mail» — вариант по умолчанию использует функцию PHP mail(), которую большинство хостингов не поддерживает. Затем посмотрите настройки оповещений на той же вкладке: уведомление покупателю и уведомление владельцу магазина настраиваются отдельно.

Каким должен быть таймаут SMTP в OpenCart?

Оставьте 5 секунд или чуть больше. Поле часто оставляют пустым, и на части сборок PHP из-за этого соединение обрывается сразу. Это не задержка отправки, а время ожидания ответа сервера.

Почему письма OpenCart попадают в спам?

Адрес магазина в разделе Система → Настройки → вкладка «Магазин» должен быть на подтверждённом домене. Магазины часто оставляют там адрес на Яндексе или Mail.ru, который не может сойтись с вашей подписью DKIM и записью SPF, поэтому DMARC не проходит.

Почему при сохранении настроек почты появляется белый экран?

Обычно это подавленная ошибка PHP. Посмотрите журнал в разделе Система → Обслуживание → Журнал ошибок и лог PHP: чаще всего не подключено расширение openssl, без которого SMTP поверх TLS работать не может.

Что дальше