1

1C-Bitrix

1C-Bitrix + Mailexam

Минимальный пример 1С-Битрикс: Управление сайтом, который отправляет тестовое письмо через SMTP Mailexam с помощью модуля mailexam.smtp.

Основан на руководстве Mailexam для 1С-Битрикс.

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

  • Аккаунт Mailexam и проект с SMTP-учётными данными.
  • 1С-Битрикс 20+ (D7) и PHP 8.0+ на существующем сайте.

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

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

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

  1. Скопируйте модуль и тестовый скрипт на сайт:
cp -R local/modules/mailexam.smtp /path/to/site/local/modules/mailexam.smtp
cp -R local/tools/mailexam /path/to/site/local/tools/mailexam
  1. Добавьте учётные данные в bitrix/.settings.php (см. settings.example.php):
'environment' => [
    'value' => [
        'MAILEXAM_LOGIN' => 'ВАШ_ЛОГИН',
        'MAILEXAM_PASSWORD' => 'ВАШ_ПАРОЛЬ',
        'MAILEXAM_PORT' => '587',
        'MAIL_FROM' => 'noreply@example.test',
    ],
    'readonly' => true,
],

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

  1. Установите модуль в админке: Marketplace → Установленные решения → Установить
    или через CLI:
php -f /path/to/site/bitrix/modules/main/tools/install_module.php mailexam.smtp
  1. Отправьте тестовое письмо:
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 → ваш проект → входящие.

После установки модуль перехватывает OnBeforePhpMailerInit и направляет системную почту Битрикс через Mailexam SMTP.

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

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

Переменные читаются из секции environment в .settings.php, getenv() или окружения PHP-FPM.

Для порта 587 отправка использует STARTTLS. Для порта 25 — обычный SMTP без STARTTLS.

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

.
├── local/modules/mailexam.smtp/
│   ├── install/index.php          # установка модуля и обработчиков
│   ├── lib/config.php             # чтение MAILEXAM_*
│   ├── lib/smtpsender.php         # SMTP-клиент с STARTTLS
│   ├── lib/eventhandler.php       # OnBeforePhpMailerInit
│   └── include.php
├── local/tools/mailexam/
│   └── mail_test.php              # POST тестовой отправки
├── settings.example.php           # фрагмент для bitrix/.settings.php
└── .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.

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

Модуль не найден после копирования

  • Путь должен быть local/modules/mailexam.smtp, затем установите модуль в админке.

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

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

Тестовый скрипт возвращает 404

  • Проверьте URL /local/tools/mailexam/mail_test.php и права на каталог local/tools.

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

  • Откройте входящие того же проекта Mailexam.
  • Проверьте JSON-тело ошибки от mail_test.php и лог PHP/Битрикс.

См. также

Лицензия

Apache 2.0