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.

  1. Скопируйте модуль в магазин:
cp -R app/code/Mailexam/Smtp /path/to/magento/app/code/Mailexam/Smtp
  1. Добавьте переменные Mailexam в app/etc/env.php (см. env.php.example):
'env' => [
    'MAILEXAM_LOGIN' => 'ВАШ_ЛОГИН',
    'MAILEXAM_PASSWORD' => 'ВАШ_ПАРОЛЬ',
    'MAILEXAM_PORT' => '587',
    'MAIL_FROM' => 'noreply@example.test',
],

Не коммитьте реальные пароли в git.

  1. Включите модуль:
cd /path/to/magento
bin/magento module:enable Mailexam_Smtp
bin/magento setup:upgrade
bin/magento cache:flush
  1. Отправьте тестовое письмо:
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.

См. также

Лицензия

Apache 2.0