Отправка писем напрямую из 1С:Предприятие экономит время бухгалтеров, менеджеров и программистов, исключая ручной перенос данных в почтовые клиенты. Система поддерживает интеграцию с Microsoft Outlook, SMTP-серверами, Exchange и даже облачными сервисами вроде Yandex.Почты или Mail.ru. Но без правильной настройки отправка может завершаться ошибками — от блокировки антиспамом до потери форматирования писем.
В этой статье разберём все актуальные способы отправки писем из 1С: от простого встроенного почтового клиента до автоматизированных рассылок через HTTP-Сервисы. Особое внимание уделим типичным ошибкам (например, Ошибка соединения с SMTP-сервером: 550) и способам их устранения. Если вам нужно отправлять счета, акты или уведомления клиентам прямо из документов 1С — здесь вы найдёте готовые решения с примерами кода.
1. Способы отправки писем из 1С: сравнение методов
В 1С:Предприятие 8.3 доступно 5 основных способов отправки писем, каждый из которых подходит для разных задач. Выбор метода зависит от объёма рассылок, требований к безопасности и инфраструктуры компании. Ниже — сравнительная таблица с ключевыми параметрами:
| Метод | Сложность настройки | Поддержка вложений | Массовая рассылка | Требует лицензию |
|---|---|---|---|---|
| Встроенный почтовый клиент | Низкая | Да | Ограничено | Нет |
| SMTP (прямое подключение) | Средняя | Да | Да | Нет |
| Microsoft Exchange | Высокая | Да | Да | Да (сервер) |
| HTTP-АPI (Yandex, Mail.ru) | Средняя | Да | Да | Нет |
| Внешние обработки (например, 1С:Рарус) | Низкая | Да | Да | Да (доп. модуль) |
Для единоразовой отправки (например, отправки счёта клиенту) достаточно встроенного клиента. Если же требуется автоматизированная рассылка (напоминания о долгах, акты сверки), лучше использовать SMTP или HTTP-АPI. Microsoft Exchange актуален для корпоративных пользователей с внутренней почтовой инфраструктурой.
2. Отправка через встроенный почтовый клиент 1С
Самый простой способ — использовать встроенные инструменты платформы. Этот метод не требует дополнительных настроек сервера и подходит для отправки одиночных писем (например, счёта из документа РеализацияТоваровУслуг).
Чтобы отправить письмо:
- 📌 Откройте документ, который нужно отправить (например, счёт).
- 🖱️ Нажмите кнопку
Ещё → Отправить по почте(илиПечать/Отправить → По почтев зависимости от конфигурации). - 📝 В открывшемся окне укажите:
- Адрес получателя (поле
Кому) - Тему письма (автоматически подставляется название документа)
- Текст сообщения (можно редактировать)
- Формат вложения (
PDF,Excel,Word)
- Адрес получателя (поле
- 📤 Нажмите
Отправить.
☑️ Подготовка к отправке через встроенный клиент
⚠️ Внимание: Встроенный клиент использует настройки почты из Параметры пользователя (раздел Администрирование → Настройки пользователя). Если письма не отправляются, проверьте:
- 🔹 Правильность указанного
SMTP-сервераи порта (обычно25,465или587). - 🔹 Логин и пароль от почтового ящика (если требуется аутентификация).
- 🔹 Наличие антиспам-фильтров на стороне получателя (письма могут попадать в спам).
Если вы используете Yandex.Почту или Mail.ru, возможно, потребуется включить опцию "Разрешить доступ по протоколу SMTP" в настройках аккаунта. Для Gmail может понадобиться двухфакторная аутентификация или генерация пароля приложения.
3. Настройка отправки через SMTP-сервер
Для массовых рассылок или автоматизированной отправки писем (например, при проведении документа) удобнее использовать прямое подключение к SMTP-серверу. Этот метод требует предварительной настройки в конфигураторе, но обеспечивает высокую надёжность и гибкость.
Шаги настройки:
- Откройте конфигуратор 1С в режиме
Администратор. - Перейдите в
Администрирование → Настройки программы → Почта и обмен. - Выберите
Настройки SMTPи заполните поля:Сервер SMTP: smtp.yandex.ru (или ваш корпоративный сервер)Порт: 465 (для SSL) или 587 (для TLS)
Логин: ваш_email@yandex.ru
Пароль:
Использовать SSL: Да
- Сохраните настройки и перезапустите 1С.
Для отправки письма из кода используйте следующий пример (подходит для управляемых форм):
Процедура ОтправитьПисьмоЧерезSMTP(АдресПолучателя, Тема, Текст, Вложение = Неопределено)
Попытка
Почта = Новый Почта;
Сообщение = Почта.СоздатьСообщение();
Сообщение.Кому = АдресПолучателя;
Сообщение.Тема = Тема;
Сообщение.Текст = Текст;
Если Вложение <> Неопределено Тогда
Сообщение.Вложения.Добавить(Вложение);
КонецЕсли;
Почта.Отправить(Сообщение);
Возврат Истина;
Исключение
Сообщить("Ошибка отправки: " + ОписаниеОшибки());
Возврат Ложь;
КонецПопытки;
КонецПроцедуры
Если письма уходят в спам, добавьте в текст сообщения строку "Это письмо отправлено автоматически из 1С:Предприятие. Пожалуйста, не отвечайте на него." — это снизит вероятность блокировки антиспам-фильтрами.
⚠️ Внимание: Некоторые почтовые сервисы (например, Gmail) блокируют доступ по SMTP для "подозрительных" приложений. В этом случае:
- 🔓 Включите опцию
"Разрешить менее безопасные приложения"в настройках аккаунта (для Gmail). - 🔑 Или используйте
OAuth 2.0для аутентификации (требует доработки кода).
4. Интеграция с Microsoft Exchange
Если ваша компания использует Microsoft Exchange Server или Office 365, можно настроить отправку писем напрямую через этот сервис. Это актуально для корпоративных пользователей, где важна синхронизация с Outlook и контроль за исходящей перепиской.
Для настройки:
- Установите компоненту
1С:Интеграция с Microsoft Exchange(доступна в 1С:ИТС). - В конфигураторе перейдите в
Администрирование → Интеграция → Настройки Exchange. - Укажите:
- 📌 Адрес сервера Exchange (например,
outlook.office365.com). - 🔑 Логин и пароль пользователя (или токен OAuth).
- 🔒 Протокол подключения (
EWSилиREST API).
- 📌 Адрес сервера Exchange (например,
- Протестируйте соединение кнопкой
Проверить подключение. - 📊 Синхронизация с календарём и задачами Outlook.
- 🔒 Высокий уровень безопасности (поддержка
OAuth 2.0). - 📈 Возможность отслеживания статуса доставки.
- 🔑 API-ключ от почтового сервиса (например, Yandex.PDD или Mail.ru Cloud Solutions).
- 📡 Библиотека для HTTP-запросов (входит в стандартную поставку 1С 8.3.20+).
Пример кода для отправки письма через Exchange:
Процедура ОтправитьЧерезExchange(АдресПолучателя, Тема, Текст)
Обмен = Новый ОбменСExchange;
Если Не Обмен.Подключен() Тогда
Сообщить("Не удалось подключиться к Exchange!");
Возврат;
КонецЕсли;
Письмо = Обмен.СоздатьПисьмо();
Письмо.Кому = АдресПолучателя;
Письмо.Тема = Тема;
Письмо.Текст = Текст;
Обмен.ОтправитьПисьмо(Письмо);
КонецПроцедуры
🔹 Преимущества метода:
Что делать, если Exchange не подключается?
Проверьте, разрешён ли доступ к EWS API в настройках Office 365 (Admin Center → Settings → API permissions). Также убедитесь, что ваш IP-адрес не заблокирован политиками безопасности компании.
5. Отправка писем через HTTP-API (Yandex, Mail.ru, SendPulse)
Если стандартные методы не подходят (например, из-за блокировки SMTP провайдером), можно использовать HTTP-запросы к API почтовых сервисов. Этот способ гибкий и позволяет отправлять письма даже с облачных серверов 1С, где прямые соединения могут быть ограничены.
Для работы потребуется:
Пример кода для отправки через Yandex.PDD API:
Функция ОтправитьЧерезYandexAPI(АдресПолучателя, Тема, Текст, APIКлюч)
Заголовки = Новый Соответствие();
Заголовки.Вставить("Authorization", "Bearer " + APIКлюч);
Заголовки.Вставить("Content-Type", "application/json");
ТелоЗапроса = Новый Структура();
ТелоЗапроса.Вставить("to", АдресПолучателя);
ТелоЗапроса.Вставить("subject", Тема);
ТелоЗапроса.Вставить("text", Текст);
HTTPСоединение = Новый HTTPСоединение("pddimp.yandex.ru", 443, Истина);
Ответ = HTTPСоединение.ОтправитьДляОбработки("/api3/email/send",
Новый HTTPЗапрос("POST", "", Заголовки, Новый ЗаписьJSON(ТелоЗапроса)));
Если Ответ.КодСостояния = 200 Тогда
Возврат Истина;
Иначе
Сообщить("Ошибка API: " + Ответ.ПолучитьТекст());
Возврат Ложь;
КонецЕсли;
КонецФункции
📌 Важно: Для Mail.ru и SendPulse структура запроса будет отличаться. Подробные спецификации API смотрите в документации сервисов. Например, для Mail.ru потребуется указать параметр "from" с подтверждённым адресом отправителя.
HTTP-API — единственный способ отправки писем с облачных серверов 1С (1C:Fresh), где прямые SMTP-соединения заблокированы.
6. Массовая рассылка писем из 1С
Для рассылки писем большому количеству получателей (например, клиентам с просроченной задолженностью) удобно использовать обработки массовой отправки. В стандартных конфигурациях (например, 1С:Бухгалтерия 3.0) есть встроенные механизмы, но их функционал ограничен. Для гибких рассылок лучше доработать код или использовать внешние решения.
Алгоритм массовой рассылки:
- Сформируйте список получателей (например, выборка из справочника
Контрагентыс фильтром по долгу). - Создайте шаблон письма (можно с подстановкой данных из 1С, например, суммы долга).
- Настройте параметры отправки (SMTP, Exchange или API).
- Запустите рассылку в
фоновом задании, чтобы не блокировать работу пользователей.
Пример кода для массовой рассылки через SMTP:
Процедура МассоваяРассылка(СписокПолучателей, ШаблонТекста)
Почта = Новый Почта;
Для Каждого Получатель Из СписокПолучателей Цикл
ТекстПисьма = СтроковыеФункции.ПодставитьПараметрыВСтроку(
ШаблонТекста,
"Имя=Получатель.Наименование;СуммаДолга=Получатель.СуммаДолга");
Сообщение = Почта.СоздатьСообщение();
Сообщение.Кому = Получатель.Email;
Сообщение.Тема = "Напоминание о задолженности";
Сообщение.Текст = ТекстПисьма;
Попытка
Почта.Отправить(Сообщение);
ЗаписьЛога("Письмо отправлено: " + Получатель.Email);
Исключение
ЗаписьЛога("Ошибка отправки " + Получатель.Email + ": " + ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
КонецПроцедуры
⚠️ Внимание: При массовых рассылках:
- 🛑 Избегайте отправки более
50 писем в минуту— это может привести к блокировке аккаунта. - 📧 Используйте подписи DKIM/SPF, чтобы письма не попадали в спам.
- 📊 Ведите
лог отправкидля отслеживания ошибок.
7. Типичные ошибки и их решение
При отправке писем из 1С пользователи часто сталкиваются с ошибками. Ниже — список самых распространённых проблем и способы их устранения:
| Ошибка | Причина | Решение |
|---|---|---|
Ошибка соединения с SMTP-сервером: 550 |
Сервер отклонил подключение (неверный логин/пароль или IP в чёрном списке). | Проверьте учётные данные и настройки безопасности на сервере. |
Не удалось отправить письмо: Timeout |
Сервер не отвечает (проблемы с сетью или блокировка фаерволом). | Проверьте подключение к интернету и настройки брандмауэра. |
Ошибка аутентификации: 535 |
Неправильный пароль или требуется двухфакторная аутентификация. | Сгенерируйте пароль приложения (для Gmail) или включите доступ для менее безопасных приложений. |
| Письма уходят в спам | Отсутствуют DKIM/SPF-записи или подозрительный контент. | Настройте записи в DNS и добавьте в письмо ссылку на отписку. |
Ошибка: Не удалось создать сообщение |
Не хватает прав или повреждена конфигурация. | Запустите 1С от имени администратора или восстановите конфигурацию. |
Если ошибка не указана в таблице, проверьте логи почтового сервера (для корпоративных решений) или включите режим отладки в 1С:
Отладка = Новый ОтладкаПочты;
Отладка.Включить();
Почта.Отправить(Сообщение);
Лог = Отладка.ПолучитьЛог();
Как включить расширенные логи для SMTP в 1С?
В файле 1cv8.lst (папка с платформой) добавьте строку LOGPOP3SMTP=1. После этого в логах появятся детали обмена с сервером.
8. Автоматизация отправки писем при событиях
Чтобы письма отправлялись автоматически (например, при проведении документа или по расписанию), используйте триггеры или регламентные задания. Это избавит пользователей от ручной отправки и снизит риск ошибок.
Пример автоматизации для конфигурации 1С:Управление торговлей 11:
- Откройте конфигуратор и найдите документ, для которого нужна автоматическая отправка (например,
ЗаказПокупателя). - Добавьте обработчик события
ПриПроведении:
Процедура ПриПроведении(Отказ, РежимПроведения)
Если РежимПроведения = РежимПроведенияДокумента.Оперативный Тогда
АдресПолучателя = Клиент.ЭлектроннаяПочта;
Если Не ПустаяСтрока(АдресПолучателя) Тогда
ОтправитьПисьмоЧерезSMTP(
АдресПолучателя,
"Ваш заказ №" + Номер + " от " + Дата,
"Здравствуйте! Ваш заказ принят в обработку. Сумма: " + СуммаДокумента,
ПолучитьВложениеPDF()
);
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Для регулярных рассылок (например, еженедельных отчётов) настройте регламентное задание:
- Перейдите в
Администрирование → Регламентные задания. - Создайте новое задание с типом
Выполнение кода. - Укажите расписание (например,
Каждый понедельник в 9:00). - В поле
Кодвставьте процедуру массовой рассылки (см. раздел 6).
⚠️ Внимание: При автоматической отправке:
- 🔄 Всегда тестируйте рассылку на тестовых адресах перед запуском.
- 📅 Учитывайте часовой пояс получателей (например, не отправляйте письма ночью).
- 📊 Ведите статистику открытий (для этого можно интегрировать 1С с сервисами вроде SendPulse).
Если вам нужна продвинутая аналитика (отслеживание открытий, кликов по ссылкам), рассмотрите интеграцию с 1С:Рарус.Почта или Bitrix24.
FAQ: Частые вопросы по отправке писем из 1С
Можно ли отправлять письма с вложениями из 1С?
Да, все рассмотренные методы (SMTP, Exchange, API) поддерживают вложения. Для этого используйте метод Сообщение.Вложения.Добавить(). Например:
Вложение = Новый ВложениеФайла("C:\Отчеты\Счет.pdf");
Сообщение.Вложения.Добавить(Вложение);
Максимальный размер вложения зависит от настроек почтового сервера (обычно до 25 МБ).
Как отправить письмо с HTML-разметкой?
Для отправки писем с форматированием (жирный текст, таблицы, изображения) укажите свойство Сообщение.ТипТекста = ТипТекстаПочты.HTML и передайте текст с тегами:
Сообщение.ТипТекста = ТипТекстаПочты.HTML;
Сообщение.Текст = "<h1>Привет, " + ИмяКлиента + "!</h1><p>Ваш счёт на сумму <strong>" + Сумма + "</strong> руб.</p>";
⚠️ Не все почтовые клиенты корректно отображают сложное HTML-форматирование. Тестируйте письма перед массовой рассылкой.
Почему письма из 1С попадают в спам?
Основные причины:
- 📛 Отсутствуют
DKIM/SPF-записи для домена отправителя. - 📧 Адрес отправителя не совпадает с доменом сервера (например, отправляете с
user@company.ru, но сервер —smtp.yandex.ru). - 📝 В письме есть "спамовые" слова (
"бесплатно","акция","срочно"). - 🔢 Большой объём писем за короткий промежуток времени.
Решение: настройте записи в DNS, используйте подтверждённые домены и ограничьте скорость рассылки.
Как отправить письмо с копией (CC/BCC)?
Используйте свойства Сообщение.Копия и Сообщение.СкрытаяКопия:
Сообщение.Копия = "copy@example.com";
Сообщение.СкрытаяКопия = "bcc@example.com";
Для массовой рассылки с скрытой копией всем получателям:
Сообщение.СкрытаяКопия = СтрСоединить(СписокАдресов, ";");
Можно ли отправить письмо из 1С:Fresh (облако)?
В 1С:Fresh прямая отправка через SMTP заблокирована. Используйте:
- 📧 HTTP-API почтовых сервисов (см. раздел 5).
- 🔄 Внешние обработки (например, 1С:Рарус.Почта).
- 📤 Экспорт данных в файл и ручную отправку через почтовый клиент.
Для автоматизации рекомендуем Yandex.PDD API или SendPulse.