WordPress¶
Инструкция для сайтов на WordPress 6.x. Mailexam подключается как SMTP-сервер через встроенный wp_mail() и хук phpmailer_init (библиотека PHPMailer).
Что понадобится¶
- Аккаунт Mailexam и проект с SMTP-учётными данными.
- WordPress 6+ и PHP 8.0+.
Скопируйте из приветственного письма (или кабинета) для вашего проекта:
ВАШ_ЛОГИН— SMTP-логин (например,xxxxx);ВАШ_ПАРОЛЬ— SMTP-пароль (уникальная пара к логину);- хост —
ВАШ_ЛОГИН.mailexam.ru(совпадает с логином).
1. Константы в wp-config.php¶
Добавьте перед строкой /* That's all, stop editing! */ (не коммитьте пароли в публичный репозиторий):
define('MAILEXAM_LOGIN', 'ВАШ_ЛОГИН');
define('MAILEXAM_PASSWORD', 'ВАШ_ПАРОЛЬ');
define('MAILEXAM_PORT', 587);
define('MAIL_FROM', 'noreply@example.test');
Хост SMTP: ВАШ_ЛОГИН.mailexam.ru.
Адрес отправителя
MAIL_FROM может быть любым тестовым адресом — письмо попадёт в Mailexam, а не реальному получателю.
Альтернативные порты¶
2. MU-плагин SMTP¶
Создайте файл wp-content/mu-plugins/mailexam-smtp.php (каталог mu-plugins создайте, если его нет):
<?php
/**
* Plugin Name: Mailexam SMTP
* Description: Отправка почты WordPress через Mailexam SMTP
*/
add_action('phpmailer_init', static function ($phpmailer): void {
if (!defined('MAILEXAM_LOGIN') || !defined('MAILEXAM_PASSWORD')) {
return;
}
$login = MAILEXAM_LOGIN;
$port = defined('MAILEXAM_PORT') ? (int) MAILEXAM_PORT : 587;
$phpmailer->isSMTP();
$phpmailer->Host = $login . '.mailexam.ru';
$phpmailer->Port = $port;
$phpmailer->SMTPAuth = true;
$phpmailer->Username = $login;
$phpmailer->Password = MAILEXAM_PASSWORD;
if ($port === 465) {
$phpmailer->SMTPSecure = 'ssl';
} elseif (in_array($port, [587, 2525], true)) {
$phpmailer->SMTPSecure = 'tls';
} else {
$phpmailer->SMTPSecure = '';
}
});
add_filter('wp_mail_from', static function (): string {
return defined('MAIL_FROM') ? MAIL_FROM : 'noreply@example.test';
});
MU-плагины подключаются автоматически — активация в админке не нужна.
3. Тестовая отправка¶
Через код (временно в functions.php темы)¶
add_action('init', static function (): void {
if (!isset($_GET['mailexam_mail_test']) || !current_user_can('manage_options')) {
return;
}
$sent = wp_mail(
'user@example.test',
'WordPress + Mailexam',
'Тест Mailexam из WordPress'
);
wp_die($sent ? 'Sent' : 'Failed');
});
Откройте в браузере (будучи администратором):
https://ваш-сайт.test/?mailexam_mail_test=1
Удалите этот фрагмент после проверки.
Через WP-CLI¶
Письмо появится в кабинете Mailexam → ваш проект → входящие.
4. Локальная разработка и CI¶
| Среда | Рекомендация |
|---|---|
local |
константы в wp-config.php или wp-config-local.php |
| CI | секреты MAILEXAM_LOGIN, MAILEXAM_PASSWORD в переменных окружения пайплайна |
Пример для .gitlab-ci.yml:
variables:
MAILEXAM_LOGIN: $MAILEXAM_LOGIN
MAILEXAM_PASSWORD: $MAILEXAM_PASSWORD
MAILEXAM_PORT: "587"
MAIL_FROM: "noreply@example.test"
После интеграционного теста проверьте доставку через API Mailexam.
5. Типичные проблемы¶
Письма не уходят через SMTP
- Убедитесь, что файл лежит в
wp-content/mu-plugins/, а не вplugins/. - Проверьте, что другой SMTP-плагин не переопределяет
phpmailer_initпозже по приоритету.
Ошибка TLS или authentication failed
Host—{логин}.mailexam.ru,Username— тот же логин из письма.- Логин и пароль — пара из письма одного проекта.
Письмо не в кабинете
- Смотрите входящие того же проекта Mailexam.
- Включите отладку:
define('WP_DEBUG', true);и плагин WP Mail Logging на время диагностики.
См. также¶
- Каталог примеров
- Пример реализации (WordPress)
- Laravel, Symfony, Phalcon — другие PHP-стеки
- Документация REST API Mailexam
- wp_mail()