Как отправить или получить почту через Gmail из 1С после отключения доступа для менее безопасных приложений?

Программист 1С v7.7
← К списку

Приветствуем вас! Сегодня мы разберем одну из самых частых и актуальных проблем, с которой сталкиваются пользователи 1С при попытке настроить отправку или получение электронной почты через сервис Gmail. После ряда изменений в политике безопасности Google, стандартные методы аутентификации, использующие только логин и основной пароль, перестали работать. Если вы видите ошибку "Аутентификация не прошла" или "SMTP error code 535 5.7.8 Username and Password not accepted", значит, вы столкнулись именно с этой ситуацией. Давайте вместе выясним причину и найдем эффективные решения.

Мы рассмотрим несколько подходов, начиная от наиболее простого и распространенного, и заканчивая более сложными, но перспективными методами. Выберем тот, который подходит именно для вашей версии 1С и ваших требований к безопасности.

Решение 1: Использование паролей приложений Google (App Passwords)

Это наиболее прямолинейное и рекомендуемое решение для большинства пользователей 1С, работающих с Gmail. Google отключил возможность использования "менее безопасных приложений" (Less secure app access), что означает, что сторонние программы, такие как 1С, больше не могут использовать ваш основной пароль для доступа к почте. Вместо этого нам потребуется сгенерировать специальный, одноразовый пароль приложения.

Давайте разберем процесс по шагам:

  1. Включите двухэтапную аутентификацию (2FA) в вашем аккаунте Google. Это обязательное условие для создания паролей приложений. Если 2FA у вас уже включена, можете пропустить этот шаг. Для включения перейдите в настройки безопасности вашего аккаунта Google.

  2. Сгенерируйте пароль приложения. После включения 2FA, в разделе "Безопасность" вашего аккаунта Google появится пункт "Пароли приложений". Зайдите в него. Вам потребуется выбрать приложение (например, "Почта") и устройство (например, "Другое (введите название)" и указать "1С"). После этого Google сгенерирует 16-значный пароль.

    Важно: Скопируйте этот пароль немедленно, так как он отображается только один раз и повторно посмотреть его будет невозможно. Если вы его потеряете, придется генерировать новый.

  3. Используйте сгенерированный пароль приложения в 1С. Вместо вашего основного пароля от Gmail, который вы использовали ранее, теперь в настройках учетной записи электронной почты в 1С вам нужно будет вставить этот 16-значный пароль приложения.

Настройка почтового клиента в 1С для Gmail

Теперь давайте посмотрим, как эти параметры применяются в коде 1С или через интерфейс встроенного почтового клиента. Нам потребуются следующие основные настройки:

Рассмотрим пример кода на встроенном языке 1С, который демонстрирует, как настроить и использовать эти параметры для отправки почты:


// Создаем объект профиля почты
Профиль = Новый ИнтернетПочтовыйПрофиль;

// Устанавливаем параметры для исходящей почты (SMTP)
Профиль.АдресСервераSMTP = "smtp.gmail.com";
Профиль.ПортSMTP = 465; 
Профиль.ИспользоватьSSLSMTP = Истина; // Для порта 465 используем SSL
// Если бы использовали порт 587, написали бы: Профиль.ИспользоватьSTARTTLSSMTP = Истина;

Профиль.ПользовательSMTP = "ваш_логин@gmail.com"; // Ваш полный адрес Gmail
Профиль.ПарольSMTP = "ВАШ_16_ЗНАЧНЫЙ_ПАРОЛЬ_ПРИЛОЖЕНИЯ"; // Сгенерированный пароль приложения
Профиль.Таймаут = 60; // Таймаут в секундах

// Можно также установить параметры для входящей почты (IMAP), если требуется получение
Профиль.АдресСервераIMAP = "imap.gmail.com"; 
Профиль.ПортIMAP = 993; 
Профиль.ИспользоватьSSLIMAP = Истина;
Профиль.ПользовательIMAP = Профиль.ПользовательSMTP;
Профиль.ПарольIMAP = Профиль.ПарольSMTP;

// Создаем объект для работы с почтой
Почта = Новый Почта;

// Подключаемся к почтовому серверу
Попытка
    Почта.Подключиться(Профиль);
    Сообщить("Успешное подключение к почтовому серверу!");

    // Создаем новое почтовое сообщение
    Сообщение = Новый ИнтернетПочтовоеСообщение;
    Сообщение.Тема = "Тестовое сообщение из 1С";
    Сообщение.Текст = "Это сообщение отправлено из 1С с использованием пароля приложения Gmail.";

    // Устанавливаем отправителя
    Сообщение.Отправитель.Адрес = Профиль.ПользовательSMTP;
    Сообщение.Отправитель.ОтображаемоеИмя = "1С Отправитель";

    // Добавляем получателя
    Сообщение.Получатели.Добавить("получатель@example.com"); 

    // Отправляем сообщение
    Почта.Отправить(Сообщение);
    Сообщить("Сообщение успешно отправлено!");

Исключение
    Сообщить("Не удалось подключиться или отправить сообщение: " + ОписаниеОшибки());
КонецПопытки;

// Отключаемся от почтового сервера
Почта.Отключиться();

В этом примере мы видим использование объектов ИнтернетПочтовыйПрофиль, Почта и ИнтернетПочтовоеСообщение. Ключевым моментом является присвоение сгенерированного пароля приложения свойству ПарольSMTPПарольIMAP, если вы настраиваете получение почты).

Решение 2: Современный подход – Аутентификация через OAuth 2.0

Для более новых версий платформы "1С:Предприятие" (начиная с 8.3.19), появилась встроенная поддержка протокола OAuth 2.0 для доступа к почтовым ящикам. Это наиболее безопасный и современный метод аутентификации, который Google активно продвигает. Он позволяет приложениям получать доступ к данным пользователя без необходимости передавать им логин и пароль напрямую, используя вместо этого временные токены.

Давайте проанализируем ситуацию с OAuth 2.0:

Встроенные средства 1С для работы с OAuth обычно доступны через объекты ИнтернетПочтовыйПрофиль, которые имеют соответствующие свойства и методы для работы с токенами OAuth. Однако, поскольку эта настройка требует шагов вне 1С и более глубокого понимания протокола, мы сосредоточимся на концептуальном описании, не приводя полного примера кода, который был бы слишком объемным и специфичным для данной страницы.

Альтернативные методы и инструменты

Помимо встроенных возможностей 1С и паролей приложений, существуют и другие способы взаимодействия с почтой Gmail, которые могут быть полезны в определенных сценариях.

Встроенный почтовый клиент 1С

Многие современные типовые конфигурации 1С, такие как "1С:Бухгалтерия", "1С:УНФ", "1С:Розница", имеют собственный встроенный почтовый клиент. Он позволяет отправлять и получать электронные письма и документы непосредственно из программы, что значительно упрощает документооборот.

Настройка учетной записи в таком клиенте обычно осуществляется через разделы "Администрирование" или "Настройки - Почта и SMS". В этих настройках вам также потребуется использовать сгенерированный пароль приложения Google вместо основного пароля. Интерфейс программы сам предложит необходимые поля для ввода адресов серверов, портов и учетных данных.

Использование `curl1c`

Для разработчиков, которым требуется максимальная гибкость и контроль над процессом, существует инструмент curl1c. Это обертка для популярной утилиты curl, позволяющая использовать ее функциональность непосредственно из 1С. curl является мощным инструментом для взаимодействия с различными сетевыми протоколами, включая SMTPS и IMAP.

Рассмотрим подробнее:

Инструмент DialMail

В прошлом, когда встроенная поддержка SSL/TLS в 1С была менее развита, внешние компоненты, такие как DialMail, пользовались популярностью. Они предоставляли расширенные возможности для работы с почтой, включая поддержку защищенных соединений.

В современных условиях, с улучшенной встроенной функциональностью платформы 1С и появлением паролей приложений/OAuth, необходимость в таких сторонних компонентах значительно снизилась. Однако, если вы работаете со старыми версиями 1С, где нет адекватной поддержки SSL или OAuth, DialMail все еще может быть рассмотрен как вариант.

Мы вместе разобрали основные методы решения проблемы отправки и получения почты через Gmail из 1С. Самым доступным и рекомендованным способом является использование паролей приложений Google. Для более новых версий платформы и высоких требований к безопасности, стоит обратить внимание на OAuth 2.0. Выберите подходящий для вас метод, следуйте нашим рекомендациям, и ваша почта из 1С снова будет работать стабильно и безопасно!

← К списку