1С 8.3 Электронная почта (E-mail) - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Электронная почта (E-mail)

Данные > Примеры кода 1С > 1С 8.3 Электронная почта (E-mail)
Электронная почта (E-mail) в 1С 8.3 используется во многих конфигурациях для различных задач электронного документооборота (печатные формы документов), спам-рекламы, отправки уведомлений сотрудникам, рассылки прайс-листов, коммерческих предложений и т.п. Платформа 1С 8.3 поддерживает почтовые протоколы IMAP, POP3 и SMTP, а также с разные виды аутентификации и SSL шифрование. Для работы с электронной почтой в типовых есть общий модуль: РаботаСПочтовымиСообщениямиСлужебный, поэтому для реализации решений с входящей и/или исходящей почтой, рекомендуется использовать соответствующие функции данного модуля. При программировании модулей собственной разработки или авторской конфигурации можно использовать нижеприведенные примеры. Для примера, к скачиванию доступна обработка "Загрузка заказов с почтового сервера".
Создание интернет профиля в 1С 8.3:
&НаСервере
Функция СозданиеИнтернетПрофиля()

   
ПочтовыйПрофиль = Новый ИнтернетПочтовыйПрофиль;
   
ПочтовыйПрофиль.ВремяОжидания          = 300;// Google рекомендует 5 минут
    // Исходящая почта
    //Если ФормироватьIMAPПрофиль Тогда
   
ПочтовыйПрофиль.АдресСервераIMAP   = "imap.yandex.ru";   // imap.mail.ru
   
ПочтовыйПрофиль.ПользовательIMAP   = "from1C@yandex.ru"; // from1C@mail.ru
   
ПочтовыйПрофиль.ПортIMAP           = 993; // 993
   
Попытка
       
ПочтовыйПрофиль.ИспользоватьSSLIMAP = Истина;
    Исключение
       
Сообщить("Не работает служба SSL IMAP! Для корректной работы необходима платформа 1С версии не менее 8.3!");
    КонецПопытки;
   
ПочтовыйПрофиль.ПарольIMAP         = "Ro1Cte921hAb8sKf4";
   
//КонецЕсли;

    //Если ФормироватьSMTPПрофиль Тогда
   
ПочтовыйПрофиль.АдресСервераSMTP   = "smtp.yandex.ru"; // smtp.mail.ru
   
ПочтовыйПрофиль.ПользовательSMTP   = "from1C@yandex.ru"; // from1C@mail.ru
   
ПочтовыйПрофиль.ПортSMTP           = 465; // 465
   
Попытка
       
ПочтовыйПрофиль.ИспользоватьSSLSMTP = Истина;
    Исключение
       
Сообщить("Не работает служба SSL SMTP! Для корректной работы необходима платформа 1С версии не менее 8.3!");
    КонецПопытки;
   
ПочтовыйПрофиль.ПарольSMTP         = "Ro1Cte921hAb8sKf4";
   
ПочтовыйПрофиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
   
//КонецЕсли;

    // Входящая почта
    //Если ФормироватьPOP3Профиль Тогда
   
ПочтовыйПрофиль.АдресСервераPOP3   = "pop.yandex.ru"; //    pop.mail.ru
   
ПочтовыйПрофиль.Пользователь       = "from1C@yandex.ru"; // from1C@mail.ru
   
ПочтовыйПрофиль.ПортPOP3           = 993; // 995
   
Попытка
       
ПочтовыйПрофиль.ИспользоватьSSLPOP3 = Истина;
    Исключение
       
Сообщить("Не работает служба SSL POP3! Для корректной работы необходима платформа 1С версии не менее 8.3!");
    КонецПопытки;
   
ПочтовыйПрофиль.Пароль             = "Ro1Cte921hAb8sKf4";
   
//Если НастройкиСоединения.СпособPOP3Аутентификации = Перечисления.СпособыPOP3Аутентификации.APOP Тогда
    //  ПочтовыйПрофиль.АутентификацияPOP3 = СпособPOP3Аутентификации.APOP;
    //ИначеЕсли НастройкиСоединения.СпособPOP3Аутентификации = Перечисления.СпособыPOP3Аутентификации.CramMD5 Тогда
    //  ПочтовыйПрофиль.АутентификацияPOP3 = СпособPOP3Аутентификации.CramMD5;
    //Иначе
    //  ПочтовыйПрофиль.АутентификацияPOP3 = СпособPOP3Аутентификации.Обычная;
    //КонецЕсли;
    //КонецЕсли;

   
Возврат ПочтовыйПрофиль;

КонецФункции
Справочно: Параметры популярных почтовых протоколов в 1С 8.3:
  • Входящая почта протокол IMAP: сервер imap.yandex.ru (SSL; порт 993)
  • Входящая почта протокол POP3: сервер pop.yandex.ru (SSL; порт 993)
  • Исходящая почта протокол SMTP: сервера smtp.yandex.ru (SSL; порт 465)
  • Примечание: почта вида login@yandex.ru: логин до знака @. Для доменной почты - логин это полный адрес почтового ящика.

  • Входящая почта протокол IMAP: сервер imap.mail.ru (SSL; порт 993)
  • Входящая почта протокол POP3: сервер pop.mail.ru (SSL; порт 995)
  • Исходящая почта протокол SMTP: сервера smtp.mail.ru (SSL; порт 465)
  • Примечание: эл.адрес - полное имя почтового ящика, включая логин, @ и домен; имя пользователя - полное имя почтового ящика, включая логин, @ и домен; обычный пароль (без шифрования); сервер исходящей почты требует авторизации.

  • Входящая почта протокол IMAP: сервер imap.gmail.com (SSL; порт 993)
  • Входящая почта протокол POP3: сервер pop.gmail.com (SSL; порт 995)
  • Исходящая почта протокол SMTP: сервера smtp.gmail.com (SSL; порт 465,  TLS, TLS/STARTTLS: 587)
  • Примечание: Время ожидания сервера более 1 минуты (рекомендуется 5 минут)

Отправить письмо по электронной почте в 1С 8.3:
&НаСервере
Процедура ОтправитьПисьмоПоЭлектроннойПочте()

   
ТекПолучатель="info@1cnik.by";
   
ТекТема="Заказ доработки 1С 8.3";
   
ТекТекст="Требуется доработка складской программы для автоматической рассылки электронных документов (ТТН/ТН2) покупателям.";

   
ЭлПочтаДляОтправки = "from1C@yandex.ru" ; //Константы.ЭлПочтаДляОтправки.Получить()
   
ПочтовыйПрофиль = СозданиеИнтернетПрофиля();
   
Сообщить(" ...Пожалуйста подождите... Идет отправка письма на "+ТекПолучатель);

   
Email = Новый ИнтернетПочта;
    Попытка
       
Email.Подключиться(ПочтовыйПрофиль);
    Исключение
        ВызватьИсключение
"Письмо НЕ отправлено! "+ОписаниеОшибки()+"!";
    КонецПопытки;

   
ПочтовоеСообщение = Новый ИнтернетПочтовоеСообщение;
   
ПочтовоеСообщение.Отправитель.Адрес = ЭлПочтаДляОтправки; // ЭлПочтаДляОтправки.АдресЭлектроннойПочты - если константа
   
ПочтовоеСообщение.Отправитель.ОтображаемоеИмя = "из 1С";
   
ПочтовоеСообщение.ИмяОтправителя = "ООО ТехноСервисПлюс"; // ЭлПочтаДляОтправки.АдресЭлектроннойПочты - если константа
   
ПочтовоеСообщение.Тема = ТекТема;
   
//ПочтовоеСообщение.Вложения.Добавить(Новый ДвоичныеДанные(ФайлПДФ),"ТТН.pdf");

   
Получатели = ПочтовоеСообщение.Получатели;
   
Получатель = Получатели.Добавить();
   
Получатель.Адрес = ТекПолучатель;

   
ИнтернетТекстПочтовогоСообщения = ПочтовоеСообщение.Тексты.Добавить();
   
ИнтернетТекстПочтовогоСообщения.Текст = ""+ТекТекст + Символы.ПС;
   
ИнтернетТекстПочтовогоСообщения.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст; // Если отправляем только текст

   
Попытка
       
Email.Послать(ПочтовоеСообщение);
       
Сообщить("Отправлено письмо на e-mail:"+СокрЛП(ТекПолучатель));
    Исключение
       
Email.Отключиться();
        ВызватьИсключение
"Письмо НЕ отправлено! "+ОписаниеОшибки()+"!";
    КонецПопытки;

   
Email.Отключиться(); // Если не отключиться  - будет "висеть" в процессах

КонецПроцедуры
Отправить письмо с вложенной таблицей (html) в 1С 8.3:
Наименование ПОСтавка НДС, %Цена
1С:Зарплата и управление персоналом 8 для Беларуси201050,60
ИТС 1С Международный20232,80
1С:8 Клиентская лицензия на 5 рабочих мест20581,40
&НаСервере
Процедура ОтправитьПисьмоСВложеннойТаблицей() // html

   
ТекПолучатель="info@1cnik.by";
   
ТекТема="Заказ установки 1С 8.3";

   
ЭлПочтаДляОтправки = "from1C@yandex.ru" ; //Константы.ЭлПочтаДляОтправки.Получить()
   
ПочтовыйПрофиль = СозданиеИнтернетПрофиля();
   
Сообщить(" ...Пожалуйста подождите... Идет отправка письма на "+ТекПолучатель);

   
Email = Новый ИнтернетПочта;
    Попытка
       
Email.Подключиться(ПочтовыйПрофиль);
    Исключение
        ВызватьИсключение
"Письмо НЕ отправлено! "+ОписаниеОшибки()+"!";
    КонецПопытки;

   
ПочтовоеСообщение = Новый ИнтернетПочтовоеСообщение;
   
ПочтовоеСообщение.Отправитель.Адрес = ЭлПочтаДляОтправки; // ЭлПочтаДляОтправки.АдресЭлектроннойПочты - если константа
   
ПочтовоеСообщение.Отправитель.ОтображаемоеИмя = "из 1С";
   
ПочтовоеСообщение.ИмяОтправителя = "ООО ТехноСервисПлюс"; // ЭлПочтаДляОтправки.АдресЭлектроннойПочты - если константа
   
ПочтовоеСообщение.Тема = ТекТема;
   
//ПочтовоеСообщение.Вложения.Добавить(Новый ДвоичныеДанные(ФайлПДФ),"ТТН.pdf");

   
Получатели = ПочтовоеСообщение.Получатели;
   
Получатель = Получатели.Добавить();
   
Получатель.Адрес = ТекПолучатель;

   
ИнтернетТекстПочтовогоСообщения = ПочтовоеСообщение.Тексты.Добавить();
   
ИнтернетТекстПочтовогоСообщения.ТипТекста = ТипТекстаПочтовогоСообщения.HTML; // Если отправляем таблицу
   
ИнтернетТекстПочтовогоСообщения.Текст =
"<table border=""1"">
|<tbody>
|<tr>
|<td><strong>Наименование ПО</strong></td>
|<td><strong>Ставка НДС, %</strong></td>
|<td><strong>Цена</strong></td>
|</tr>
|<tr>
|<td>1С:Зарплата и управление персоналом 8 для Беларуси</td>
|<td>20</td>
|<td>1050,60</td>
|</tr>
|<tr>
|<td>ИТС 1С Международный</td>
|<td>20</td>
|<td>232,80</td>
|</tr>
|<tr>
|<td>1С:8 Клиентская лицензия на 5 рабочих мест</td>
|<td>20</td>
|<td>581,40</td>
|</tr>
|</tbody>
|</table>";
    Попытка
       
Email.Послать(ПочтовоеСообщение);
       
Сообщить("Отправлено письмо на e-mail:"+СокрЛП(ТекПолучатель));
    Исключение
       
Email.Отключиться();
        ВызватьИсключение
"Письмо НЕ отправлено! "+ОписаниеОшибки()+"!";
    КонецПопытки;

   
Email.Отключиться(); // Если не отключиться  - будет "висеть" в процессах

КонецПроцедуры
Получить письма с почтового сервера в 1С 8.3:
&НаСервере
Процедура ПолучитьПисьмаСПочтовогоСервера()

   
ПочтовыйПрофиль = СозданиеИнтернетПрофиля();
    Попытка
       
Сообщить("Подключение к почтовому серверу..."+ПочтовыйПрофиль.АдресСервераPOP3);
       
Email = Новый ИнтернетПочта;
       
Email.Подключиться(ПочтовыйПрофиль);

       
МассивСообщений = Новый Массив;
       
Сообщить("Чтение писем...");
       
МассивСообщений = Email.Выбрать(Ложь); // Ложь - письма с сервера не удаляются
   
Исключение
       
Сообщить("Ошибка подключения к серверу: "+ОписаниеОшибки());
    КонецПопытки;

    Если
МассивСообщений.Количество() = 0 Тогда
       
Сообщить("Почтовый ящик пуст!");
    КонецЕсли;

КонецПроцедуры
💡 Шаблоны (готовые модели) кода 1С 8.3 с тегом "Электронная почта (E-mail)" 1С:
1
комментарий
Талин
30 мар 2021
Очень подробно и понятно! Спасибо.
____________________
Copyright©, «Программист 1С в г.Минске», 02.10.2020
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому