В практике автоматизации бизнеса часто возникает задача организовать рассылку новостей или акций клиентам непосредственно из базы 1С. Однако платные сервисы рассылок при больших объемах могут стоить значительно, а бесплатные имеют жесткие ограничения. В рамках данной статьи мы разберем, как реализовать механизм отправки до 500 и более сообщений в день, используя бесплатные инструменты и обходя ограничения почтовых сервисов.
Основная сложность при массовой отправке писем через обычные почтовые ящики (например, mail.ru или yandex.ru) заключается в алгоритмах защиты от спама. Если вы попытаетесь отправить 500 писем подряд с одного ящика, он будет заблокирован в течение первых минут. Для решения этой задачи мы проанализируем три основных подхода:
Postfix или Exim для полного контроля над процессом.Рассмотрим подробнее способ, предложенный участниками форума, который заключается в распределении нагрузки между несколькими бесплатными ящиками. Суть метода: мы создаем пул учетных записей и отправляем каждое следующее письмо с нового адреса, делая между ними случайные паузы.
Для реализации этой схемы в 1С нам потребуется создать Регистр сведений, например, ЛимитыОтправкиПочты, со следующими измерениями и ресурсами:
УчетнаяЗапись (Тип: СправочникСсылка.УчетныеЗаписиЭлектроннойПочты)ДатаОтправки (Тип: Дата)КоличествоОтправлено (Тип: Число)Разберем логику выбора учетной записи по шагам. Нам нужно найти ту запись, по которой лимит в 100 писем в день еще не исчерпан. Посмотрим на пример кода для выбора доступной почты:
Функция ПолучитьДоступнуюУчетнуюЗапись()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| УчетныеЗаписи.Ссылка КАК Учетка
|ИЗ
| Справочник.УчетныеЗаписиЭлектроннойПочты КАК УчетныеЗаписи
|ГДЕ
| НЕ УчетныеЗаписи.ПометкаУдаления
| И УчетныеЗаписи.Ссылка НЕ В (
| ВЫБРАТЬ Регистр.УчетнаяЗапись
| ИЗ РегистрСведений.ЛимитыОтправкиПочты КАК Регистр
| ГДЕ Регистр.ДатаОтправки = &ТекущаяДата И Регистр.КоличествоОтправлено >= 100)";
Запрос.УстановитьПараметр("ТекущаяДата", НачалоДня(ТекущаяДата()));
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
Возврат Неопределено;
Иначе
Выборка = Результат.Выбрать();
Выборка.Следующий();
Возврат Выборка.Учетка;
КонецЕсли;
КонецФункции
После выбора учетной записи необходимо реализовать отправку с паузой. Проанализируем ситуацию: пауза в 3-5 секунд позволяет имитировать действия человека. Для этого используем метод ПодключитьОбработчикОжидания или Приостановить (в фоновом задании).
Если клиент готов на минимальные настройки, лучше всего использовать сервисы вроде Brevo (Sendinblue) или UniSender Go. Многие из них предоставляют до 300-500 писем в день бесплатно. Основное преимущество здесь — высокая доставляемость и наличие готовых механизмов отписки.
Выясним причину, почему это надежнее: при использовании API вы отправляете не просто текст, а структурированные данные, а сервис сам заботится о цифровых подписях SPF и DKIM. В 1С это реализуется через HTTPЗапрос.
Пример структуры запроса к API для отправки (условно):
Соединение = Новый HTTPСоединение("api.brevo.com", 443,,,,, Новый ЗащищенноеСоединениеOpenSSL());
Запрос = Новый HTTPЗапрос("/v3/smtp/email");
Запрос.Заголовки.Вставить("api-key", "ВАШ_КЛЮЧ");
Запрос.Заголовки.Вставить("Content-Type", "application/json");
СтруктураПисьма = Новый Структура;
СтруктураПисьма.Вставить("sender", Новый Структура("email", "info@company.ru"));
СтруктураПисьма.Вставить("to", Новый Массив); // Добавляем получателей
СтруктураПисьма.Вставить("htmlContent", "Текст сообщения");
// Преобразуем в JSON и отправляем...
Проанализируем современные требования почтовых систем (Google, Mail.ru, Яндекс). С 2024 года требования ужесточились. Даже если вы используете бесплатные ящики, важно соблюдать следующие правила, чтобы не попасть в "спамерские":
@OurCompany.ru), эти записи должны быть настроены в DNS. Без них письма будут блокироваться.Рассылка даже 500 писем с задержкой в 5 секунд займет около 40 минут. Если запустить этот процесс в основном потоке, 1С "зависнет" для пользователя. Разберем, как правильно вынести этот процесс в ФоновыеЗадания.
Создайте общий модуль с признаком "Сервер" и процедуру для рассылки. Вызывайте её следующим образом:
ПараметрыЗадания = Новый Массив;
ПараметрыЗадания.Добавить(СписокПолучателей);
ФоновыеЗадания.Выполнить("ОбщийМодульРассылка.ВыполнитьРассылкуСервер", ПараметрыЗадания);
Внутри процедуры ВыполнитьРассылкуСервер обязательно используйте попытку-исключение для обработки ошибок подключения к SMTP-серверу. Помним, что бесплатные почтовики часто рвут соединение при подозрении на подозрительную активность.
Не забывайте, что электронная почта — это персональные данные (ФЗ-152). Прежде чем настраивать рассылку из 1С, убедитесь, что в договоре с контрагентом или в отдельном согласии прописано право компании отправлять информационные и рекламные сообщения. В противном случае компания рискует получить штраф до 500 000 рублей.
Резюмируем: Для небольших объемов (до 500 писем) схема с ротацией аккаунтов mail.ru через справочник учетных записей 1С является рабочей, но требует аккуратной настройки пауз и лимитов. Для более профессионального подхода и гарантии доставки рекомендуем использовать специализированные SMTP-релеи с настроенными цифровыми подписями.