При настройке работы с электронной почтой в платформе 1С:Предприятие 8.3 через объект ИнтернетПочта разработчики часто сталкиваются с ситуацией, когда при попытке вызова метода Подключиться() возникает ошибка установления соединения или ошибка аутентификации.
Разберем детально причины возникновения ошибки 14 (ошибка установки защищенного SSL/TLS соединения), проанализируем настройки объекта ИнтернетПочтовыйПрофиль и рассмотрим пошаговое решение этой проблемы.
Рассмотрим стандартный сценарий: при попытке подключения к серверу Mail.ru (или аналогичным почтовым сервисам Yandex, Gmail) платформа выдает одно из следующих сообщений:
Проанализируем базовый код, в котором часто допускаются ошибки при заполнении свойств профиля почты:
&НаСервере
Процедура ПолучитьНаСервереПочтуОшибочныйВариант()
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераPOP3 = "pop.mail.ru";
Профиль.АдресСервераSMTP = "smtp.mail.ru";
Профиль.Пользователь = "user@mail.ru";
Профиль.Пароль = "secret";
Профиль.ВремяОжидания = 10;
// Ошибка 1: Стандартный порт 110 не работает при защищенном SSL-соединении
Профиль.ПортPOP3 = 110;
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.ИспользоватьSSLPOP3 = Истина;
// Ошибка 2: Включение этих флагов блокирует согласование стандартных методов аутентификации Mail.ru
Профиль.ТолькоЗащищеннаяАутентификацияPOP3 = Истина;
Профиль.ТолькоЗащищеннаяАутентификацияSMTP = Истина;
Сосоединение = Новый ИнтернетПочта;
Сосоединение.Подключиться(Профиль, ПротоколИнтернетПочты.POP3);
КонецПроцедуры
Посмотрим, какие свойства объекта ИнтернетПочтовыйПрофиль требуют изменения для корректной работы защищенного соединения SSL/TLS:
ИспользоватьSSLPOP3 = Истина) необходимо использовать порт 995 (а не порт 110, предназначенный для незащищенного соединения). Для протокола SMTP с SSL используется порт 465 (или 587 при использовании STARTTLS).ТолькоЗащищеннаяАутентификацияPOP3 и ТолькоЗащищеннаяАутентификацияSMTP должны быть установлены в значение Ложь (или закомментированы). При их значении Истина платформа 1С пытается применить специфические алгоритмы шифрования паролей (например, NTLM/APOP), которые не поддерживаются большинством публичных почтовых серверов, что приводит к ошибке "Не найден подходящий безопасный метод".POP3ПередSMTP следует устанавливать в значение Ложь, если почтовый сервер не требует предварительной авторизации по POP3 для отправки писем через SMTP.Рассмотрим исправный пример кода на сервере 1С:
&НаСервере
Процедура ПолучитьНаСервереПочтуКорректно()
Профиль = Новый ИнтернетПочтовыйПрофиль;
// Серверы и порты для SSL
Профиль.АдресСервераPOP3 = "pop.mail.ru";
Профиль.ПортPOP3 = 995; // Порт 995 для POP3 SSL
Профиль.АдресСервераSMTP = "smtp.mail.ru";
Профиль.ПортSMTP = 465; // Порт 465 для SMTP SSL
// Пользователь и пароль (обязательно логин полностью)
Профиль.Пользователь = "user@mail.ru";
Профиль.Пароль = "пароль_внешнего_приложения"; // Пароль приложения из настроек почты
Профиль.ПользовательSMTP = "user@mail.ru";
Профиль.ПарольSMTP = "пароль_внешнего_приложения";
Профиль.ВремяОжидания = 15;
// Использование защищенного соединения SSL
Профиль.ИспользоватьSSLPOP3 = Истина;
Профиль.ИспользоватьSSLSMTP = Истина;
// Отключаем жесткое требование защищенной аутентификации
Профиль.ТолькоЗащищеннаяАутентификацияPOP3 = Ложь;
Профиль.ТолькоЗащищеннаяАутентификацияSMTP = Ложь;
Профиль.POP3ПередSMTP = Ложь;
Почта = Новый ИнтернетПочта;
Попытка
Почта.Подключиться(Профиль, ПротоколИнтернетПочты.POP3);
Сообщить("Подключение к почтовому серверу прошло успешно!");
// Получаем письма
Заголовки = Почта.ПолучитьЗаголовки();
// Отключаемся после выполнения операций
Почта.Отключиться();
Исключение
Сообщить("Не удалось подключиться к почтовому серверу: " + ОписаниеОшибки(), СтатусСообщения.Важное);
КонецПопытки;
КонецПроцедуры
Важный нюанс, который часто является причиной ошибок аутентификации — это политика безопасности современных почтовых сервисов (Mail.ru, Yandex, Gmail). Вход по основному паролю учетной записи для сторонних программ через протоколы POP3/IMAP/SMTP заблокирован по умолчанию.
Для успешной авторизации необходимо:
Профиль.Пароль и Профиль.ПарольSMTP.Если код настроен верно, но ошибка подключения с кодом 14 продолжается на сервере 1С или в тонком клиенте, причиной может быть отсутствие доверия к SSL-сертификату почтового сервера на стороне операционной системы или платформы.
Проанализируем системный способ отключения проверки цепочки сертификатов для конкретных почтовых узлов.
В конфигурационный файл платформы conf.cfg (который находится в папке conf установленной платформы 1С, например: C:\Program Files\1cv8\conf\conf.cfg) добавляем следующую директиву:
IgnoreInternetMailServerCertificateVerificationList=pop.mail.ru;smtp.mail.ru;imap.mail.ru
Этот параметр позволяет платформе игнорировать ошибки проверки сертификатов SSL/TLS при работе объекта ИнтернетПочта для указанных хостов и успешно устанавливать защищенное соединение.
@mail.ru, @yandex.ru и т.д.).Пароль используйте специально сгенерированный пароль приложения.ТолькоЗащищеннаяАутентификацияPOP3 и ТолькоЗащищеннаяАутентификацияSMTP в значение Ложь.