Как настроить получение входящих писем во встроенном клиенте 1С?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Базовый механизм: работа с объектом ИнтернетПочта

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

Рассмотрим пошагово базовый алгоритм подключения и загрузки почтовых сообщений:

  1. Формирование параметров подключения. Создаем экземпляр объекта ИнтернетПочтовыйПрофиль и заполняем параметры доступа к серверу входящей почты: адрес сервера, порт, логин, пароль, а также настройки протокола и шифрования.
  2. Инициализация почтового клиента. Создаем объект ИнтернетПочта.
  3. Подключение к серверу. Вызываем метод Подключиться() с передачей созданного профиля.
  4. Чтение сообщений. Вызываем метод Получить() для скачивания новых входящих писем в массив объектов ИнтернетПочтовоеСообщение.
  5. Завершение сеанса. Обязательно вызываем метод Отключиться() для корректного освобождения ресурсов на стороне почтового сервера.

Посмотрим на пример программной реализации загрузки сообщений по протоколу IMAP:


Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераIMAP = "imap.example.com";
Профиль.ПортIMAP = 993;
Профиль.ПользовательIMAP = "robot@example.com";
Профиль.ПарольIMAP = "app_specific_password";
Профиль.ИспользоватьSSLIMAP = Истина;

Почта = Новый ИнтернетПочта;

Попытка
    Почта.Подключиться(Профиль, ПротоколИнтернетПочты.IMAP);
    
    // Получаем массив входящих сообщений
    МассивПисем = Почта.Получить();
    
    Для Каждого Письмо Из МассивПисем Цикл
        Тема = Письмо.Тема;
        Отправитель = Письмо.Отправитель.Адрес;
        // Обработка тела письма и вложений
    КонецЦикла;
    
    Почта.Отключиться();
Исключение
    Почта.Отключиться();
    ВызватьИсключение;
КонецПопытки;

Выбор протокола: IMAP или POP3

Платформа поддерживает перечисления ПротоколИнтернетПочты.IMAP и ПротоколИнтернетПочты.POP3. Выясним причину, по которой в современной разработке рекомендуется отдавать предпочтение именно IMAP:

  1. Выборочная загрузка данных. IMAP позволяет сначала запросить только список писем или заголовки через метод ПолучитьЗаголовки(). Это помогает предварительно оценить объем данных и исключить зависание системы при обработке писем с тяжелыми вложенными файлами.
  2. Управление статусами. При использовании IMAP письма можно оставлять на сервере, помечая их прочитанными или перемещая в архивные папки, тогда как протокол POP3 чаще всего рассчитан на полное скачивание и удаление с сервера.
  3. Работа с произвольными папками. IMAP дает возможность скачивать почту не только из папки «Входящие», но и из любых пользовательских или системных папок сервера.

Безопасность и пароли приложений

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

  1. Включить в настройках почтового ящика разрешение на доступ по протоколам IMAP/POP3.
  2. Сгенерировать в профиле безопасности почтового сервиса специальный пароль для внешних приложений и указывать в свойстве ПарольIMAP (или Пароль) именно его.
  3. Для защищенных соединений (порты 993 для IMAPS, 995 для POP3S) обязательно устанавливать свойства ИспользоватьSSLIMAP или ИспользоватьSSLPOP3 в значение Истина.

Рекомендации по производительности и хранению данных

Получение почты — ресурсоемкая синхронная операция. Рассмотрим нюансы, которые необходимо учитывать при внедрении функционала:

  1. Фоновое выполнение. Скачивание почты в интерфейсе пользователя приводит к временной блокировке программы. Операции подключения и чтения следует выносить в фоновые или регламентные задания, выполняемые на стороне сервера.
  2. Оптимизация хранения файлов. Входящие сообщения могут содержать объемные вложения. Сохранение двоичных данных в реквизитах типа ХранилищеЗначения быстро увеличивает размер информационной базы. Рекомендуется сохранять вложения в томах на диске.
  3. Использование библиотек стандартов. В типовых конфигурациях на базе БСП (Библиотеки Стандартных Подсистем) уже встроен развитый механизм работы с почтой. Перед написанием собственного кода целесообразно проверить справочник «Учетные записи электронной почты» и готовые регламентные задания конфигурации.
← На главную