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.
- Скопируйте must-use плагины на сайт:
cp -R wp-content/mu-plugins/* /path/to/wordpress/wp-content/mu-plugins/
- Добавьте константы 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.
- Отправьте тестовое письмо через 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для диагностики.
См. также
- Руководство Mailexam для WordPress (wiki)
- 1С-Битрикс, Laravel, Symfony, Phalcon — другие PHP-стеки
- wp_mail()
- Документация API Mailexam
Лицензия
Apache 2.0