Настройка встроенной почты в 1С:Предприятии — задача, с которой рано или поздно сталкивается каждый технический специалист. Несмотря на наличие типовых механизмов, пользователи часто получают ошибки вида «SMTP greeting failure: 421 SMTP connection broken» или «Bad recipient address syntax». В этой статье мы подробно разберем, как правильно настроить почтовый профиль, как обеспечить поддержку современных протоколов шифрования (SSL/TLS) и как корректно обрабатывать списки получателей в программном коде.
Разберем ситуацию: вы пытаетесь подключиться к почтовому серверу (например, Gmail или Яндекс), но система выдает ошибку 421. Чаще всего это происходит из-за того, что почтовый сервер ожидает зашифрованное соединение, а старая конфигурация или платформа 1С пытается передать данные в открытом виде. Рассмотрим основные причины:
ИнтернетПочтовыйПрофиль появилась в полном объеме только в версии 8.3. Если вы используете платформу 8.2 или ранние релизы 8.3 (ниже 8.3.10), встроенные средства могут не поддерживать современные стандарты шифрования (TLS 1.2).Проанализируем способы решения этой проблемы в зависимости от ваших условий.
Если ваша платформа позволяет работать с SSL, но в конфигурации это не реализовано, мы можем внести изменения в код. Рассмотрим пример доработки функции ПолучитьИнтернетПочтовыйПрофиль. Нам необходимо принудительно указать системе использовать защищенное соединение для протоколов POP3 и SMTP.
Посмотрим на пример кода, который можно внедрить в общий модуль (например, УправлениеЭлектроннойПочтой):
Функция ПолучитьИнтернетПочтовыйПрофиль(УчетнаяЗапись) Экспорт
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераPOP3 = УчетнаяЗапись.POP3Сервер;
Профиль.АдресСервераSMTP = УчетнаяЗапись.SMTPСервер;
Профиль.Пароль = УчетнаяЗапись.Пароль;
Профиль.Пользователь = УчетнаяЗапись.Логин;
Профиль.ПортPOP3 = УчетнаяЗапись.ПортPOP3;
Профиль.ПортSMTP = УчетнаяЗапись.ПортSMTP;
// Включаем поддержку SSL программно
// Если в справочнике нет реквизитов, можно установить Истина принудительно
Профиль.ИспользоватьSSLPOP3 = Истина;
Профиль.ИспользоватьSSLSMTP = Истина;
Если УчетнаяЗапись.ТребуетсяSMTPАутентификация Тогда
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;
Профиль.ПарольSMTP = УчетнаяЗапись.ПарольSMTP;
Профиль.ПользовательSMTP = УчетнаяЗапись.ЛогинSMTP;
КонецЕсли;
Возврат Профиль;
КонецФункции
Важный нюанс: Если вы используете порты 465 (для SSL) или 587 (для TLS), убедитесь, что они правильно прописаны в настройках учетной записи в самой 1С.
Выясним, что делать, если обновить платформу невозможно (например, вы работаете на 1С 8.1 или 8.2). В этом случае 1С физически не умеет «общаться» по SSL. Решением станет использование программы-туннеля, такой как stunnel.
Разберем логику работы этого метода:
127.0.0.1 и порт 25 без всякого шифрования.Этот метод позволяет работать с защищенной почтой даже из самых старых конфигураций без переписывания глобальных модулей.
Рассмотрим ситуацию из практики: при попытке отправить письмо на несколько адресов, перечисленных через точку с запятой (например, email1@mail.ru; email2@mail.ru), 1С выдает ошибку «SMTP error code 501 5.1.3 Bad recipient address syntax».
Проанализируем причину: объект ИнтернетПочтовоеСообщение не умеет самостоятельно разбирать строку с разделителями в поле адреса. Он ожидает, что каждый адрес будет добавлен как отдельный объект в коллекцию Получатели.
Выполним правильную настройку отправки по шагам:
// Предположим, СписокАдресовСтрокой = "user1@test.ru; user2@test.ru"
МассивАдресов = СтрРазделить(СписокАдресовСтрокой, ";", Ложь);
Сообщение = Новый ИнтернетПочтовоеСообщение;
Для Каждого ТекущийАдрес Из МассивАдресов Цикл
АдресПриемник = Сообщение.Получатели.Добавить();
// Обязательно используем СокращенныйЛП, чтобы убрать лишние пробелы
АдресПриемник.Адрес = СокращенП(ТекущийАдрес);
КонецЦикла;
Сообщение.Тема = "Тестовое письмо";
Сообщение.Тексты.Добавить("Текст сообщения");
// Далее вызываем метод Послать() объекта ИнтернетПочта
Чтобы окончательно закрыть вопрос с ошибками подключения, обратите внимание на следующие моменты:
ВремяОжидания в объекте ИнтернетПочтовыйПрофиль (по умолчанию оно может быть слишком малым).АдресСервераПрокси, ПортПрокси, ПользовательПрокси и ПарольПрокси.Используя данные инструкции, вы сможете настроить почту практически в любой конфигурации 1С, обеспечив надежную передачу данных и корректную обработку адресатов.