1С-Битрикс¶
Инструкция для сайтов на 1С-Битрикс: Управление сайтом 20+ (D7). Mailexam® подключается как SMTP-сервер через модуль mailexam.smtp и обработчик события OnBeforePhpMailerInit.
Что понадобится¶
- Аккаунт Mailexam® и проект с SMTP-учётными данными.
- 1С-Битрикс 20+ и PHP 8.0+.
Скопируйте из приветственного письма (или личного кабинета) для вашего проекта:
ВАШ_ЛОГИН— SMTP-логин (например,xxxxx);ВАШ_ПАРОЛЬ— SMTP-пароль (уникальная пара к логину);- хост —
ВАШ_ЛОГИН.mailexam.ru(совпадает с логином).
1. Переменные в .settings.php¶
Добавьте секцию environment в bitrix/.settings.php (не коммитьте пароли в публичный репозиторий):
'environment' => [
'value' => [
'MAILEXAM_LOGIN' => 'ВАШ_ЛОГИН',
'MAILEXAM_PASSWORD' => 'ВАШ_ПАРОЛЬ',
'MAILEXAM_PORT' => '587',
'MAIL_FROM' => 'noreply@example.test',
],
'readonly' => true,
],
SMTP-хост в коде: ВАШ_ЛОГИН.mailexam.ru.
Адрес отправителя
MAIL_FROM может быть любым тестовым адресом — письмо попадёт в Mailexam®, а не реальному получателю.
Альтернативные порты¶
2. Установка модуля¶
Скопируйте local/modules/mailexam.smtp и local/tools/mailexam из репозитория-примера на сайт, затем установите модуль:
- в админке: Marketplace → Установленные решения;
- или через CLI (если доступен на хостинге).
Модуль содержит:
lib/smtpsender.php— SMTP-клиент с STARTTLS на порту 587;lib/eventhandler.php— настройка PHPMailer черезOnBeforePhpMailerInit;local/tools/mailexam/mail_test.php— тестовый endpoint.
3. SMTP-отправка (фрагмент)¶
// local/modules/mailexam.smtp/lib/smtpsender.php
public function send(string $to, string $subject, string $body, ?string $from = null): void
{
if (!Config::isConfigured()) {
throw new \RuntimeException('MAILEXAM_LOGIN and MAILEXAM_PASSWORD must be set');
}
$host = Config::getHost(); // {login}.mailexam.ru
$port = Config::getPort();
if (in_array($port, [587, 2525], true)) {
$this->sendWithStartTls(/* ... */);
return;
}
$this->sendPlain(/* ... */);
}
Полный модуль — в репозитории на Mos.Hub.
4. Тестовая отправка¶
curl -X POST https://your-site.test/local/tools/mailexam/mail_test.php \
-H 'Content-Type: application/json' \
-d '{"to":"user@example.test","subject":"Тест","body":"Привет"}'
Письмо появится в личном кабинете Mailexam® → ваш проект → входящие.
Когда заданы MAILEXAM_LOGIN и MAILEXAM_PASSWORD, системные письма Битрикс (регистрация, формы, уведомления) также идут через SMTP Mailexam.
5. Локальная разработка и CI¶
| Окружение | Рекомендация |
|---|---|
local |
секция environment в bitrix/.settings.php |
| CI | секреты MAILEXAM_LOGIN, MAILEXAM_PASSWORD в переменных pipeline |
Пример для .gitlab-ci.yml:
variables:
MAILEXAM_LOGIN: $MAILEXAM_LOGIN
MAILEXAM_PASSWORD: $MAILEXAM_PASSWORD
MAILEXAM_PORT: "587"
MAIL_FROM: "noreply@example.test"
После интеграционного теста проверьте доставку через REST API Mailexam®.
6. Типичные проблемы¶
Модуль не найден после копирования
- Путь должен быть
local/modules/mailexam.smtp, затем установите модуль в админке.
Ошибка TLS или аутентификации
- Хост должен быть
{логин}.mailexam.ru, логин — тот же из приветственного письма. - Логин и пароль — пара из письма одного проекта.
Тестовый скрипт возвращает 404
- Проверьте URL
/local/tools/mailexam/mail_test.php. - Убедитесь, что каталог
local/toolsдоступен веб-серверу.
Письмо не в кабинете
- Откройте входящие того же проекта Mailexam®.
- Проверьте JSON-тело ошибки от
mail_test.phpи лог PHP.