Magento + Mailexam
Минимальная интеграция Magento 2 Open Source, которая отправляет тестовое письмо через SMTP Mailexam с помощью пользовательского модуля.
Основана на руководстве Mailexam для Magento.
Что понадобится
- Аккаунт Mailexam и проект с SMTP-учётными данными.
- Существующий магазин Magento 2.4+ (Open Source или Commerce) с PHP 8.1+.
Из приветственного письма или личного кабинета Mailexam:
| Переменная | Описание |
|---|---|
MAILEXAM_LOGIN |
SMTP-логин (например, xxxxx) |
MAILEXAM_PASSWORD |
SMTP-пароль (пара к логину) |
| Хост |
{MAILEXAM_LOGIN}.mailexam.ru (собирается автоматически в коде) |
Быстрый старт (на хосте)
Используйте на существующей установке Magento.
- Скопируйте модуль в магазин:
cp -R app/code/Mailexam/Smtp /path/to/magento/app/code/Mailexam/Smtp
- Добавьте переменные Mailexam в
app/etc/env.php(см.env.php.example):
'env' => [
'MAILEXAM_LOGIN' => 'ВАШ_ЛОГИН',
'MAILEXAM_PASSWORD' => 'ВАШ_ПАРОЛЬ',
'MAILEXAM_PORT' => '587',
'MAIL_FROM' => 'noreply@example.test',
],
Не коммитьте реальные пароли в git.
- Включите модуль:
cd /path/to/magento
bin/magento module:enable Mailexam_Smtp
bin/magento setup:upgrade
bin/magento cache:flush
- Отправьте тестовое письмо:
curl -X POST https://your-store.test/mailexam/mail/test \
-H 'Content-Type: application/json' \
-d '{"to":"user@example.test","subject":"Тест","body":"Привет"}'
Письмо появится в личном кабинете Mailexam → ваш проект → входящие.
После настройки модуль также направляет всю транзакционную почту Magento (TransportInterface) через SMTP Mailexam.
Переменные окружения
| Переменная | Обязательна | По умолчанию | Описание |
|---|---|---|---|
MAILEXAM_LOGIN |
да | — | SMTP-логин; хост — {логин}.mailexam.ru
|
MAILEXAM_PASSWORD |
да | — | SMTP-пароль |
MAILEXAM_PORT |
нет | 587 |
SMTP-порт (587, 2525 или 25) |
MAIL_FROM |
нет | noreply@example.test |
Адрес отправителя для тестовых запросов |
Для порта 587 отправка использует STARTTLS. Для порта 25 — обычный SMTP без STARTTLS.
Переменные читаются из env.php Magento (секция env), getenv() или окружения shell.
Структура проекта
.
├── app/code/Mailexam/Smtp/
│ ├── Controller/Mail/Test.php # POST /mailexam/mail/test
│ ├── Model/Config.php # читает MAILEXAM_*
│ ├── Model/SmtpSender.php # SMTP-клиент с STARTTLS
│ ├── Plugin/Mail/TransportPlugin.php
│ └── etc/ # module, routes, di.xml
├── env.php.example
└── .env.example # справочник для CI/shell
CI
Задайте эти секреты в окружении CI или экспортируйте перед интеграционными тестами:
variables:
MAILEXAM_LOGIN: $MAILEXAM_LOGIN
MAILEXAM_PASSWORD: $MAILEXAM_PASSWORD
MAILEXAM_PORT: "587"
MAIL_FROM: "noreply@example.test"
После отправки письма в тесте проверьте доставку через API Mailexam.
Типичные проблемы
Модуль не найден после копирования
- Путь должен быть
app/code/Mailexam/Smtp, затем выполнитеbin/magento setup:upgrade.
Ошибка TLS или аутентификации
- Хост должен быть
{логин}.mailexam.ru, username — тот же логин из письма. - Логин и пароль должны быть из одного проекта Mailexam.
Тестовый endpoint возвращает 404
- Выполните
bin/magento cache:flush. - Проверьте URL витрины и что модуль включён.
Письмо не в кабинете
- Откройте входящие того же проекта Mailexam.
- Проверьте логи Magento в
var/log/и JSON-тело ошибки от тестового endpoint.
См. также
- Руководство Mailexam для Magento (wiki)
- WordPress, 1С-Битрикс, Laravel, Symfony — другие PHP-стеки
- Magento DevDocs — Email
- Документация API Mailexam
Лицензия
Apache 2.0