При автоматизированной отправке электронных писем из системы 1С через внешние SMTP-серверы, такие как Gmail или корпоративный Mimecast, пользователи часто сталкиваются с проблемами аутентификации и блокировками по политике безопасности. Рассмотрим подробно, как решить эти сложности и настроить надежную отправку корреспонденции.
Наш сценарий включает отправку писем с почтового аккаунта vasya.D@domen.com. При этом сам почтовый ящик находится на Gmail, а также имеется собственный SMTP-сервер smtp_inbound.mimecast.com. Важным нюансом является то, что авторизация на Gmail происходит через учетную запись vasya.D@domen.com, и для этой учетной записи включена двухфакторная аутентификация (2FA).
Изначально разработчик столкнулся со следующими проблемами при попытке отправить письма из 1С:
При подключении к SMTP Gmail (smtp.gmail.com):
Возникала ошибка Произошла ошибка при работе с SMTP. Код ошибки: 27, а также при других конфигурациях ошибка аутентификации: Аутентификация не прошла (SMTP error code 535 5.7.8 Username and Password not accepted. Learn more at https://support.google.com/mail/?p=BadCredentials). Эта ошибка указывает на то, что предоставленные логин и пароль были отклонены сервером Gmail.
Пример кода, используемый для попытки подключения к Gmail:
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.gmail.com";
Профиль.ПользовательSMTP = ОтправительПольз; // vasya.D@domen.com
Профиль.ПарольSMTP = ПарольПользGMAIL; // VasyaK$1
Профиль.ИспользоватьSSLSMTP = Истина;
Профиль.ПортSMTP = 465;
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
Профиль.ТолькоЗащищеннаяАутентификацияSMTP = Истина;
При подключении к собственному SMTP-серверу Mimecast (smtp_inbound.mimecast.com):
Подключение проходило успешно, но при отправке писем возникали ошибки:
Почтовый ящик не доступен (SMTP error code 550 Submitter failed to authenticate) при использовании ПортSMTP = 587. Эта ошибка говорит о том, что отправитель не смог успешно аутентифицироваться.Почтовый ящик не доступен (SMTP error code 550 Anti-Spoofing policy - Inbound not allowed) при использовании ПортSMTP = 25. Данная ошибка указывает на срабатывание политики антиспуфинга Mimecast, которая запрещает отправку писем от имени вашего домена, если они кажутся подозрительными или исходят из неавторизованного источника.Эти ошибки явно указывают на проблемы с аутентификацией и политиками безопасности, как со стороны Google, так и со стороны Mimecast.
Основной причиной ошибки 535-5.7.8 Username and Password not accepted при работе с Gmail SMTP, особенно для аккаунтов, использующих собственный домен (например, Google Workspace), является включенная двухфакторная аутентификация (2FA) и отключение поддержки "менее безопасных приложений" со стороны Google. Обычный пароль аккаунта Google в этом случае не подходит для программной аутентификации.
Для решения этой проблемы нам необходимо использовать "пароли приложений" (App Passwords).
Включение двухэтапной аутентификации (2FA):
Если у вас еще не включена двухэтапная аутентификация для аккаунта Google, вам потребуется ее активировать. Мы переходим в настройки безопасности вашего аккаунта Google и следуем инструкциям по настройке 2FA.
Генерация пароля приложения:
После включения 2FA, в разделе безопасности аккаунта Google (обычно "Безопасность" -> "Как вы входите в Google" -> "Пароли приложений") мы генерируем специальный 16-значный пароль. Этот пароль предназначен исключительно для программного доступа к вашему аккаунту и будет использоваться вместо обычного пароля в коде 1С.
Важно: Запишите или скопируйте этот пароль сразу, так как он отображается только один раз. При изменении основного пароля от Gmail-аккаунта также потребуется сгенерировать новый пароль приложения.
Настройка 1С для SMTP Gmail с паролем приложения:
Теперь мы можем корректно настроить почтовый профиль в 1С. Используем сгенерированный пароль приложения в качестве ПарольSMTP.
Процедура ОтправитьПочтуЧерезGmail()
ОтправительПольз = "vasya.D@domen.com";
ПарольПриложенияGMAIL = "ваш_16_значный_пароль_приложения"; // Используем сгенерированный пароль приложения!
Если ЗначениеЗаполнено(ОтправительПольз) И ЗначениеЗаполнено(ПарольПриложенияGMAIL) Тогда
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.gmail.com";
Профиль.ПользовательSMTP = ОтправительПольз;
Профиль.ПарольSMTP = ПарольПриложенияGMAIL;
Профиль.ИспользоватьSSLSMTP = Истина; // Обязательно используем SSL для Gmail
Профиль.ПортSMTP = 465; // Стандартный порт для SSL/TLS
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
Профиль.ТолькоЗащищеннаяАутентификацияSMTP = Истина;
Почта = Новый ИнтернетПочта;
Попытка
Почта.Подключиться(Профиль);
Сообщить("Успешно подключились к SMTP Gmail.");
Письмо = Новый ИнтернетПочтовоеСообщение;
Текст = Письмо.Тексты.Добавить("Это тестовое сообщение из 1С через Gmail SMTP.");
Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;
Письмо.Тема = "Тестовое письмо из 1С";
Письмо.Отправитель = ОтправительПольз;
Письмо.ИмяОтправителя = "Вася (1С)";
Письмо.Получатели.Добавить("arzu.a@yandex.ru"); // Адрес получателя
Попытка
Почта.Послать(Письмо);
Сообщить("Письмо успешно отправлено!");
Исключение
Сообщить("Ошибка при отправке письма: " + ОписаниеОшибки());
КонецПопытки;
Исключение
Сообщить("Не удалось подключиться к SMTP Gmail: " + ОписаниеОшибки());
КонецПопытки;
Почта.Отключиться();
Сообщить("Соединение завершено.");
Иначе
Сообщить("Не заполнен отправитель или пароль приложения.");
КонецЕсли;
КонецПроцедуры
Иногда также может использоваться порт 587 с ИспользоватьSSLSMTP = Истина, что означает использование TLS. В большинстве современных сценариев 465 с SSL более предпочтителен.
Ошибки типа 550 Submitter failed to authenticate и 550 Anti-Spoofing policy - Inbound not allowed, которые мы видим при работе с Mimecast, требуют более глубокой настройки на стороне самого почтового шлюза Mimecast. Мы выясним, что эти проблемы не связаны напрямую с кодом 1С, а скорее с политиками безопасности вашего почтового домена, управляемыми Mimecast.
550 Submitter failed to authenticate:
Эта ошибка указывает на то, что учетные данные, которые мы предоставляем для аутентификации, не соответствуют ожиданиям Mimecast, или учетная запись не настроена для SMTP-отправки.
Для устранения этой проблемы администратору Mimecast необходимо:
vasya.D@domen.com включена опция "SMTP submission" в настройках пользователя Mimecast.550 Anti-Spoofing policy - Inbound not allowed:
Эта ошибка возникает, когда Mimecast видит письмо, которое выглядит так, будто оно подделывает отправителя (спуфинг), то есть кажется, что оно отправлено из вашего домена, но при этом поступило из источника, который не авторизован Mimecast для такой отправки. Это происходит, например, если вы пытаетесь отправить письмо из 1С, а Mimecast настроен так, что ожидает все исходящие письма вашего домена только через определенные внутренние серверы или IP-адреса.
Для решения этой проблемы администратору Mimecast необходимо:
В случае с Mimecast, наша задача как программистов 1С — предоставить администраторам Mimecast всю необходимую информацию о сервере 1С (IP-адрес, используемые домены отправителей), чтобы они могли внести соответствующие исключения в свои политики безопасности.
Независимо от используемого SMTP-сервера, при настройке почтового профиля в 1С мы должны учитывать несколько ключевых аспектов:
Тип протокола и порт:
Современные почтовые серверы требуют использования защищенных соединений. Всегда старайтесь использовать Профиль.ИспользоватьSSLSMTP = Истина. Для SSL обычно используется порт 465, для TLS (который активируется поверх незащищенного соединения) — порт 587.
Аутентификация:
Используем Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login. Это наиболее распространенный и поддерживаемый метод аутентификации.
Защищенная аутентификация:
Профиль.ТолькоЗащищеннаяАутентификацияSMTP = Истина. Это гарантирует, что 1С будет использовать только методы аутентификации, которые передают пароль в зашифрованном виде.
Адрес отправителя и имя:
Обязательно указываем полный адрес электронной почты в поле Письмо.Отправитель и Профиль.ПользовательSMTP. Мы можем также задать читабельное имя отправителя через Письмо.ИмяОтправителя.
Обработка ошибок:
Мы всегда окружаем операции подключения и отправки писем блоками Попытка...Исключение...КонецПопытки. Это позволяет нам перехватывать ошибки, выводить их описание и более точно понимать причину сбоя.
Как мы видим, успешная отправка писем из 1С через сторонние SMTP-серверы требует не только корректного кода, но и понимания настроек безопасности почтовых служб. В случае с Gmail и двухфакторной аутентификацией, ключом к решению являются "пароли приложений". При работе с корпоративными решениями, такими как Mimecast, мы должны взаимодействовать с администраторами для настройки политик антиспуфинга и аутентификации. Всегда помним о важности использования защищенных соединений (SSL/TLS) и правильной аутентификации для обеспечения надежности и безопасности почтовых отправлений.