1С 8.3 БСП ОтправитьПочтовоеСообщение - Программист 1С Минск. Автоматизация бизнеса.

Популярные страницы:
Перейти к контенту

1С 8.3 БСП ОтправитьПочтовоеСообщение

Данные > Примеры кода 1С > 1С 8.3 БСП > Почтовые сообщения и e-mail
Перейти в раздел примеры кода 1С 8.3:
1С 8.3 БСП ОтправитьПочтовоеСообщение. До версии 3.1.1 Выполняет отправку почтового сообщения.
Метод БСП
Результат = РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(УчетнаяЗапись, Письма, ТекстОшибки);

//
// Выполняет отправку почтовых сообщений.
// Функция может вызвать исключение, которое требуется обработать.
//
// Параметры:
//  УчетнаяЗапись - СправочникСсылка.УчетныеЗаписиЭлектроннойПочты - ссылка на
//                 учетную запись электронной почты.
//  ПараметрыОтправки - Структура - содержит всю необходимую информацию о письме:
//
//   * Кому - Массив
//          - Строка - интернет адреса получателей письма.
//          - Массив - коллекция структур адресов:
//              * Адрес         - Строка - почтовый адрес (должно быть обязательно заполнено).
//              * Представление - Строка - имя адресата.
//          - Строка - интернет-адреса получателей письма, разделитель - ";".
//
//   * ПолучателиСообщения - Массив - массив структур, описывающий получателей:
//      ** Адрес - Строка - почтовый адрес получателя сообщения.
//      ** Представление - Строка - представление адресата.
//
//   * Копии        - Массив
//                  - Строка - адреса получателей копий письма. См. описание поля Кому.
//
//   * СкрытыеКопии - Массив
//                  - Строка - адреса получателей скрытых копий письма. См. описание поля Кому.
//
//   * Тема       - Строка - (обязательный) тема почтового сообщения.
//   * Тело       - Строка - (обязательный) текст почтового сообщения (простой текст в кодировке win-1251).
//   * Важность   - ВажностьИнтернетПочтовогоСообщения
//
//   * Вложения - Массив - файлы, которые необходимо приложить к письму (описания в виде структур):
//     ** Представление - Строка - имя файла вложения;
//     ** АдресВоВременномХранилище - Строка - адрес двоичных данных вложения во временном хранилище.
//     ** Кодировка - Строка - кодировка вложения (используется, если отличается от кодировки письма).
//     ** Идентификатор - Строка - (необязательный) используется для отметки картинок, отображаемых в теле письма.
//
//   * АдресОтвета - Соответствие
//                 - Строка - см. описание поля Кому.
//   * ИдентификаторыОснований - Строка - идентификаторы оснований данного письма.
//   * ОбрабатыватьТексты  - Булево - необходимость обрабатывать тексты письма при отправке.
//   * УведомитьОДоставке  - Булево - необходимость запроса уведомления о доставке.
//   * УведомитьОПрочтении - Булево - необходимость запроса уведомления о прочтении.
//   * ТипТекста   - Строка
//                 - ПеречислениеСсылка.ТипыТекстовЭлектронныхПисем
//                 - ТипТекстаПочтовогоСообщения - определяет тип
//                  переданного теста допустимые значения:
//                  HTML/ТипыТекстовЭлектронныхПисем.HTML - текст почтового сообщения в формате HTML.
//                  ПростойТекст/ТипыТекстовЭлектронныхПисем.ПростойТекст - простой текст почтового сообщения.
//                                                 Отображается "как есть" (значение по
//                                                 умолчанию).
//                  РазмеченныйТекст/ТипыТекстовЭлектронныхПисем.РазмеченныйТекст - текст почтового сообщения в формате
//                                                 Rich Text.
//   * Соединение - ИнтернетПочта - существующее соединение с почтовым сервером. Если не указано, то создается новое.
//   * ПротоколПочты - Строка - если указано значение "IMAP", то письмо будет передано по протоколу IMAP, если по
//                              указано значение "Все", то по протоколу SMTP и по протоколу IMAP, если ничего не указано
//                              то по протоколу SMTP. Параметр имеет смысл, только наличии действующего соединения,
//                              указанного в параметр Соединение. В противном случае протокол будет определен
//                              автоматически при установке соединения.
//   * ИдентификаторСообщения - Строка - (возвращаемый параметр) идентификатор отправленного почтового сообщения на SMTP-сервере;
//   * ИдентификаторСообщенияОтправкаIMAP - Строка - (возвращаемый параметр) идентификатор отправленного почтового
//                                         сообщения на IMAP сервере;
//   * ОшибочныеПолучатели - Соответствие - (возвращаемый параметр) список адресов, по которым отправка не выполнена.
//                                          См. возвращаемое значение метода ИнтернетПочта.Послать() в синтакс-помощнике.
//
//  УдалитьСоединение - ИнтернетПочта - параметр устарел, см. параметр ПараметрыОтправки.Соединение.
//  УдалитьПротоколПочты - Строка     - параметр устарел, см. параметр ПараметрыОтправки.ПротоколПочты.
//
// Возвращаемое значение:
//  Строка - идентификатор отправленного сообщения.
//
Функция ОтправитьПочтовоеСообщение(Знач УчетнаяЗапись, Знач ПараметрыОтправки,
   Знач УдалитьСоединение = Неопределено, УдалитьПротоколПочты = "") Экспорт

   Если УдалитьСоединение <> Неопределено Тогда
       ПараметрыОтправки.Вставить("Соединение", УдалитьСоединение);
   КонецЕсли;

   Если Не ПустаяСтрока(УдалитьПротоколПочты) Тогда
       ПараметрыОтправки.Вставить("ПротоколПочты", УдалитьПротоколПочты);
   КонецЕсли;

   Если ТипЗнч(УчетнаяЗапись) <> Тип("СправочникСсылка.УчетныеЗаписиЭлектроннойПочты")
       Или НЕ ЗначениеЗаполнено(УчетнаяЗапись) Тогда
       ВызватьИсключение НСтр("ru = 'Учетная запись не заполнена или заполнена неправильно.'");
   КонецЕсли;

   Если ПараметрыОтправки = Неопределено Тогда
       ВызватьИсключение НСтр("ru = 'Не заданы параметры отправки.'");
   КонецЕсли;

   ТипЗнчКому = ?(ПараметрыОтправки.Свойство("Кому"), ТипЗнч(ПараметрыОтправки.Кому), Неопределено);
   ТипЗнчКопии = ?(ПараметрыОтправки.Свойство("Копии"), ТипЗнч(ПараметрыОтправки.Копии), Неопределено);
   СкрытыеКопии = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ПараметрыОтправки, "СкрытыеКопии");

   Если ТипЗнчКому = Неопределено И ТипЗнчКопии = Неопределено И СкрытыеКопии = Неопределено Тогда
       ВызватьИсключение НСтр("ru = 'Не указано ни одного получателя.'");
   КонецЕсли;

   Если ТипЗнчКому = Тип("Строка") Тогда
       ПараметрыОтправки.Кому = ОбщегоНазначенияКлиентСервер.РазобратьСтрокуСПочтовымиАдресами(ПараметрыОтправки.Кому);
   ИначеЕсли ТипЗнчКому <> Тип("Массив") Тогда
       ПараметрыОтправки.Вставить("Кому", Новый Массив);
   КонецЕсли;

   Если ТипЗнчКопии = Тип("Строка") Тогда
       ПараметрыОтправки.Копии = ОбщегоНазначенияКлиентСервер.РазобратьСтрокуСПочтовымиАдресами(ПараметрыОтправки.Копии);
   ИначеЕсли ТипЗнчКопии <> Тип("Массив") Тогда
       ПараметрыОтправки.Вставить("Копии", Новый Массив);
   КонецЕсли;

   Если ТипЗнч(СкрытыеКопии) = Тип("Строка") Тогда
       ПараметрыОтправки.СкрытыеКопии = ОбщегоНазначенияКлиентСервер.РазобратьСтрокуСПочтовымиАдресами(СкрытыеКопии);
   ИначеЕсли ТипЗнч(СкрытыеКопии) <> Тип("Массив") Тогда
       ПараметрыОтправки.Вставить("СкрытыеКопии", Новый Массив);
   КонецЕсли;

   Если ПараметрыОтправки.Свойство("АдресОтвета") И ТипЗнч(ПараметрыОтправки.АдресОтвета) = Тип("Строка") Тогда
       ПараметрыОтправки.АдресОтвета = ОбщегоНазначенияКлиентСервер.РазобратьСтрокуСПочтовымиАдресами(ПараметрыОтправки.АдресОтвета);
   КонецЕсли;

   РаботаСПочтовымиСообщениямиСлужебный.ОтправитьСообщение(УчетнаяЗапись, ПараметрыОтправки);
   РаботаСПочтовымиСообщениямиПереопределяемый.ПослеОтправкиПисьма(ПараметрыОтправки);

   Если ПараметрыОтправки.ОшибочныеПолучатели.Количество() > 0 Тогда
       ТекстОшибки = НСтр("ru = 'Следующие почтовые адреса не были приняты почтовым сервером:'");
       Для Каждого ОшибочныйПолучатель Из ПараметрыОтправки.ОшибочныеПолучатели Цикл
           ТекстОшибки = ТекстОшибки + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1: %2",
               ОшибочныйПолучатель.Ключ, ОшибочныйПолучатель.Значение);
       КонецЦикла;
       ВызватьИсключение ТекстОшибки;
   КонецЕсли;

   Возврат ПараметрыОтправки.ИдентификаторСообщения;

КонецФункции
// Автор библиотеки: ООО "1С-Софт". Все права защищены © 2021
// Типовая конфигурация Библиотека стандартных подсистем (далее - БСП)
// Код БСП распространяется по лицензии Attribution 4.0 International (CC BY 4.0):
// ссылка на лицензию: https://creativecommons.org/licenses/by/4.0/legalcode
Примера использования (с вложением)
Функция ОтправитьТабличныйДокументЭлектроннойПочтойКакPDF(УчетнаяЗаписьПочтыОтправителя, ПочтаПолучателя,
   ТекстПисьма, ТемаПисьма, АдресТабличногоДокументаВоВременномХранилище)

   Отправлено = Ложь;

   Если УчетнаяЗаписьПочтыОтправителя = Неопределено Или УчетнаяЗаписьПочтыОтправителя.Пустая() Тогда
       Возврат Отправлено;
   КонецЕсли;

   ТабДок = ПолучитьИзВременногоХранилища(АдресФайлаВоВременномХранилище);
   ПотокФайла = Новый ПотокВПамяти();
   ТабДок.Записать(ПотокФайла, ТипФайлаТабличногоДокумента.PDF);

   ДвоичныеДанныеФайла = ПотокФайла.ЗакрытьИПолучитьДвоичныеДанные();
   ВременноеХранилищеФайла = ПоместитьВоВременноеХранилище(ДвоичныеДанныеФайла, Новый УникальныйИдентификатор);

   Вложения = Новый Массив;
   ОписаниеВложения = Новый Структура("Представление, АдресВоВременномХранилище", ТекстПисьма + ".pdf", ВременноеХранилищеФайла);
   Вложения.Добавить(ОписаниеВложения);

   ПараметрыПисьма = Новый Структура;
   ПараметрыПисьма.Вставить("Кому", ПочтаПолучателя);
   ПараметрыПисьма.Вставить("Тема", ТемаПисьма);
   ПараметрыПисьма.Вставить("Тело", ТекстПисьма);
   ПараметрыПисьма.Вставить("ТипТекста", "ПростойТекст");
   ПараметрыПисьма.Вставить("Вложения", Вложения);

   Попытка
       Идентификатор = РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(УчетнаяЗаписьПочтыОтправителя, ПараметрыПисьма);
       Если ЗначениеЗаполнено(Идентификатор) Тогда
           Отправлено = Истина;
       КонецЕсли;
   Исключение
       ЗаписьЖурналаРегистрации("Отправка письма " + ПочтаПолучателя, УровеньЖурналаРегистрации.Ошибка,,,ОписаниеОшибки());
   КонецПопытки;

   Возврат Отправлено;

КонецФункции
Поиск кода
0
Комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 06.10.2021
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Назад к содержимому