Интеграции / 1С-Битрикс
Sendersy + 1С-Битрикс
Битрикс + Sendersy: подключение через обработчик события OnBeforeMailEvent или через прямой POST в /v1/emails из ваших скриптов.
1. Установка
bash
# 1) Положите файл в /local/php_interface/include/sendersy_mailer.php # 2) Подключите его в /local/php_interface/init.php
2. Переменные окружения
bash
// /bitrix/.settings.php или /local/php_interface/init.php
define('SENDERSY_API_KEY', 'sk_live_...');3. Отправка письма
php
<?php
// /local/php_interface/include/sendersy_mailer.php
namespace Local\Sendersy;
use Bitrix\Main\EventManager;
use Bitrix\Main\Web\HttpClient;
use Bitrix\Main\Web\Json;
class Mailer
{
public static function register(): void
{
$em = EventManager::getInstance();
$em->addEventHandler('main', 'OnBeforeEventSend', [self::class, 'onBeforeEventSend']);
}
public static function onBeforeEventSend(&$arFields, &$arMessage): bool
{
$apiKey = defined('SENDERSY_API_KEY') ? SENDERSY_API_KEY : '';
if (!$apiKey) return true;
$to = is_array($arFields['EMAIL_TO'] ?? null)
? $arFields['EMAIL_TO']
: [$arFields['EMAIL_TO'] ?? ($arMessage['EMAIL_TO'] ?? '')];
$http = new HttpClient(['socketTimeout' => 15]);
$http->setHeader('Authorization', 'Bearer ' . $apiKey);
$http->setHeader('Content-Type', 'application/json');
$http->post('https://api.sendersy.com/v1/emails', Json::encode([
'from' => $arFields['MESSAGE_FROM'] ?? ($arMessage['EMAIL_FROM'] ?? 'noreply@yourdomain.com'),
'to' => array_filter($to),
'subject' => $arMessage['SUBJECT'] ?? '',
'html' => $arMessage['MESSAGE'] ?? '',
'tags' => [['name' => 'source', 'value' => 'bitrix']],
]));
// Верните false если хотите, чтобы Битрикс НЕ отправлял через свой штатный mail()
return false;
}
}
// /local/php_interface/init.php
\Local\Sendersy\Mailer::register();