WordPress + Mailexam

Минимальный пример WordPress, который отправляет тестовое письмо через SMTP Mailexam с помощью wp_mail() и must-use плагина.

Основан на руководстве Mailexam для WordPress.

Что понадобится

  • Аккаунт Mailexam и проект с SMTP-учётными данными.
  • WordPress 6+ и PHP 8.0+ (для существующего сайта на хосте) или Docker для локальной отладки.

Из приветственного письма или личного кабинета Mailexam:

Переменная Описание
MAILEXAM_LOGIN SMTP-логин (например, xxxxx)
MAILEXAM_PASSWORD SMTP-пароль (пара к логину)
Хост {MAILEXAM_LOGIN}.mailexam.ru (задаётся в MU-плагине)

Быстрый старт (на хосте)

Используйте это на существующей установке WordPress.

  1. Скопируйте must-use плагины на сайт:
cp -R wp-content/mu-plugins/* /path/to/wordpress/wp-content/mu-plugins/
  1. Добавьте константы Mailexam в wp-config.php перед /* That's all, stop editing! */:
define('MAILEXAM_LOGIN', 'ВАШ_ЛОГИН');
define('MAILEXAM_PASSWORD', 'ВАШ_ПАРОЛЬ');
define('MAILEXAM_PORT', 587);
define('MAIL_FROM', 'noreply@example.test');

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

  1. Отправьте тестовое письмо через REST endpoint:
curl -X POST https://your-site.test/wp-json/mailexam/v1/mail/test \
  -H 'Content-Type: application/json' \
  -d '{"to":"user@example.test","subject":"Тест","body":"Привет"}'

Письмо появится в личном кабинете Mailexam → ваш проект → входящие.

Альтернатива через WP-CLI

wp eval "var_export(wp_mail('user@example.test', 'Проверка', 'Привет из WordPress'));"

Переменные окружения

Переменная Обязательна По умолчанию Описание
MAILEXAM_LOGIN да SMTP-логин; хост становится {логин}.mailexam.ru
MAILEXAM_PASSWORD да SMTP-пароль
MAILEXAM_PORT нет 587 SMTP-порт (587, 2525, 465 или 25)
MAIL_FROM нет noreply@example.test Адрес отправителя

Структура проекта

.
├── wp-content/mu-plugins/
│   ├── mailexam-smtp.php       # SMTP Mailexam через phpmailer_init
│   └── mailexam-mail-test.php  # POST /wp-json/mailexam/v1/mail/test
├── .env.example
└── docker-compose.yml          # только для локальной отладки

Docker (отладка)

Docker предназначен для локальной отладки. Для продакшена или существующего сайта используйте шаги для хоста выше.

cp .env.example .env
# отредактируйте .env с учётными данными Mailexam

docker compose up -d

Откройте http://127.0.0.1:8080 и пройдите одноразовый мастер установки WordPress.

Затем отправьте тестовое письмо:

curl -X POST http://127.0.0.1:8080/wp-json/mailexam/v1/mail/test \
  -H 'Content-Type: application/json' \
  -d '{"to":"user@example.test","subject":"Тест","body":"Привет"}'

Must-use плагины монтируются из ./wp-content/mu-plugins. Константы Mailexam передаются через WORDPRESS_CONFIG_EXTRA из .env.

CI

Задайте эти секреты в окружении CI:

variables:
  MAILEXAM_LOGIN: $MAILEXAM_LOGIN
  MAILEXAM_PASSWORD: $MAILEXAM_PASSWORD
  MAILEXAM_PORT: "587"
  MAIL_FROM: "noreply@example.test"

После отправки письма в тесте проверьте доставку через API Mailexam.

Типичные проблемы

Почта не использует SMTP

  • Плагины должны быть в wp-content/mu-plugins/, а не в plugins/.
  • Проверьте, что другой SMTP-плагин не переопределяет phpmailer_init.

TLS или ошибка аутентификации

  • Хост должен быть {логин}.mailexam.ru, имя пользователя — тот же логин из письма.
  • Логин и пароль должны быть из одного проекта Mailexam.

REST endpoint возвращает 404

  • Сначала завершите установку WordPress.
  • Попробуйте /index.php?rest_route=/mailexam/v1/mail/test, если постоянные ссылки не настроены.

Письмо не в кабинете

  • Откройте входящие того же проекта Mailexam.
  • Включите WP_DEBUG для диагностики.

См. также

Лицензия

Apache 2.0