При реализации отправки электронных писем средствами платформы «1С:Предприятие» разработчики часто сталкиваются с ошибкой: «Произошла ошибка при работе с SMTP. Код ошибки: 27» или сообщениями о том, что почтовый сервер недоступен либо не указан. Разберем по шагам, почему возникает эта проблема и как правильно настроить параметры подключения к почте.
Рассмотрим исходный пример кода, при выполнении которого возникает сбой:
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.АдресСервераSMTP = "mail.sms-tele.com";
Профиль.ПользовательSMTP = "почта";
Профиль.ПарольSMTP = "пароль";
Профиль.ПортSMTP = 25;
Профиль.Пользователь = "почта";
Профиль.Пароль = "снова пароль";
Профиль.ТолькоЗащищеннаяАутентификацияSMTP = Истина;
Почта = Новый ИнтернетПочта;
Попытка
Почта.Подключиться(Профиль);
Исключение
Сообщить("Ошибка при подключении к серверу: " + ОписаниеОшибки());
КонецПопытки;
Проанализируем ключевые параметры созданного профиля, которые приводят к ошибке:
Профиль.ИспользоватьSSLSMTP = Истина; совместно со значением Профиль.ПортSMTP = 25;. Порт 25 исторически предназначен для открытого соединения без шифрования либо для протокола с явным переходом на шифрование (STARTTLS). Прямое SSL/TLS-соединение (неявный SSL), которое включает платформа при установке свойства ИспользоватьSSLSMTP = Истина, по стандарту ожидает порт 465.Профиль.ТолькоЗащищеннаяАутентификацияSMTP = Истина; предписывает платформе использовать строго механизм CRAM-MD5. Если сервер поддерживает только стандартные типы авторизации (PLAIN или LOGIN), работающие внутри уже зашифрованного канала, 1С вернет ошибку авторизации.Для устранения ошибки скорректируем настройки профиля в зависимости от требований почтового сервера.
Если сервер работает по защищенному протоколу SSL/TLS (порт 465):
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "mail.sms-tele.com";
Профиль.ПортSMTP = 465;
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.ТолькоЗащищеннаяАутентификацияSMTP = Ложь;
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;
Профиль.ПользовательSMTP = "user@domain.com";
Профиль.ПарольSMTP = "ПарольПриложенияИлиУчетки";
Профиль.Таймаут = 30;
Почта = Новый ИнтернетПочта;
Почта.Подключиться(Профиль);
Если почтовый сервер использует стандартный порт 25 или порт 587 (STARTTLS), отключим прямое свойство SSL:
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "mail.sms-tele.com";
Профиль.ПортSMTP = 25; // Или 587
Профиль.ИспользоватьSSLSMTP = Ложь;
Профиль.ТолькоЗащищеннаяАутентификацияSMTP = Ложь;
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;
Профиль.ПользовательSMTP = "user@domain.com";
Профиль.ПарольSMTP = "Пароль";
Почта = Новый ИнтернетПочта;
Почта.Подключиться(Профиль);
Выясним, открыт ли сетевой порт до почтового сервера с рабочего места или сервера 1С. Для этого воспользуемся консольной утилитой Telnet в командной строке операционной системы:
Для проверки стандартного порта выполним команду:
telnet mail.sms-tele.com 25
Для проверки защищенного порта выполним команду:
telnet mail.sms-tele.com 465
Если командная строка сообщает, что команда telnet не найдена, включим данный компонент через «Включение или отключение компонентов Windows» (Telnet Client / Клиент Telnet). Успешное подключение к порту 25 отобразит приветственный баннер сервера с кодом 220, что подтверждает отсутствие сетевых блокировок брандмауэром или провайдером.
Если в информационной базе используется типовая конфигурация (например, «1С:ERP», «1С:Комплексная автоматизация», «1С:Управление торговлей» или «1С:Бухгалтерия»), используем встроенный механизм проверки:
ИнтернетПочтовыйПрофиль, которые сформировала БСП.Платформа «1С:Предприятие» строго проверяет цепочку сертификатов узла при включенном SSL. Если почтовый сервер корпоративный и на нем установлен самоподписанный сертификат, подключение завершится ошибкой 27. Рассмотрим пути решения:
bin/conf) и добавим строку:IgnoreInternetMailServerCertificateVerificationList=mail.sms-tele.comУспешный вход в почту через браузер не гарантирует, что те же учетные данные сработают по протоколу SMTP. Обратим внимание на следующие особенности:
user@domain.com), другие — только имя учетной записи без доменной части (user). Проверим оба варианта в свойстве ПользовательSMTP.ПарольSMTP.Если специфика сети или настройки корпоративного почтового сервера не позволяют использовать объект ИнтернетПочта, применим альтернативные решения:
HTTPСоединение и HTTPЗапрос.Почта, который передаст команду отправки через установленный в ОС почтовый клиент (например, Microsoft Outlook).