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 (собирается в модуле) |
Быстрый старт (на хосте)
- Скопируйте модуль и тестовый скрипт на сайт:
cp -R local/modules/mailexam.smtp /path/to/site/local/modules/mailexam.smtp
cp -R local/tools/mailexam /path/to/site/local/tools/mailexam
- Добавьте учётные данные в
bitrix/.settings.php(см.settings.example.php):
'environment' => [
'value' => [
'MAILEXAM_LOGIN' => 'ВАШ_ЛОГИН',
'MAILEXAM_PASSWORD' => 'ВАШ_ПАРОЛЬ',
'MAILEXAM_PORT' => '587',
'MAIL_FROM' => 'noreply@example.test',
],
'readonly' => true,
],
Не коммитьте реальные пароли в git.
- Установите модуль в админке: Marketplace → Установленные решения → Установить
или через CLI:
php -f /path/to/site/bitrix/modules/main/tools/install_module.php mailexam.smtp
- Отправьте тестовое письмо:
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/Битрикс.
См. также
- Руководство Mailexam для 1С-Битрикс (wiki)
- WordPress, Magento, Laravel — другие PHP-стеки
- Документация 1С-Битрикс
- Документация API Mailexam
Лицензия
Apache 2.0