Отправить почтовое сообщение. Выполняет отправку почтовых сообщений.
// Выполняет отправку почтовых сообщений.
// Функция может вызвать исключение, которое требуется обработать.
//
// Параметры:
// УчетнаяЗапись - СправочникСсылка.УчетныеЗаписиЭлектроннойПочты - ссылка на
// учетную запись электронной почты.
// ПараметрыОтправки - Структура - содержит всю необходимую информацию о письме:
//
// * Кому - Массив, Строка - интернет адреса получателей письма.
// - Массив - коллекция структур адресов:
// * Адрес - Строка - почтовый адрес (должно быть обязательно заполнено).
// * Представление - Строка - имя адресата.
// - Строка - интернет-адреса получателей письма, разделитель - ";".
//
// * ПолучателиСообщения - Массив - массив структур, описывающий получателей:
// ** Адрес - Строка - почтовый адрес получателя сообщения.
// ** Представление - Строка - представление адресата.
//
// * Копии - Массив, Строка - адреса получателей копий письма. См. описание поля Кому.
//
// * СкрытыеКопии - Массив, Строка - адреса получателей скрытых копий письма. См. описание поля Кому.
//
// * Тема - Строка - (обязательный) тема почтового сообщения.
// * Тело - Строка - (обязательный) текст почтового сообщения (простой текст в кодировке win-1251).
// * Важность - ВажностьИнтернетПочтовогоСообщения.
//
// * Вложения - Массив - файлы, которые необходимо приложить к письму (описания в виде структур):
// ** Представление - Строка - имя файла вложения;
// ** АдресВоВременномХранилище - Строка - адрес двоичных данных вложения во временном хранилище.
// ** Кодировка - Строка - кодировка вложения (используется, если отличается от кодировки письма).
// ** Идентификатор - Строка - (необязательный) используется для отметки картинок, отображаемых в теле письма.
//
// * АдресОтвета - Соответствие - см. описание поля Кому.
// * ИдентификаторыОснований - Строка - идентификаторы оснований данного письма.
// * ОбрабатыватьТексты - Булево - необходимость обрабатывать тексты письма при отправке.
// * УведомитьОДоставке - Булево - необходимость запроса уведомления о доставке.
// * УведомитьОПрочтении - Булево - необходимость запроса уведомления о прочтении.
// * ТипТекста - Строка, Перечисление.ТипыТекстовЭлектронныхПисем, ТипТекстаПочтовогоСообщения - определяет тип
// переданного теста допустимые значения:
// HTML/ТипыТекстовЭлектронныхПисем.HTML - текст почтового сообщения в формате HTML.
// ПростойТекст/ТипыТекстовЭлектронныхПисем.ПростойТекст - простой текст почтового сообщения.
// Отображается "как есть" (значение по
// умолчанию).
// РазмеченныйТекст/ТипыТекстовЭлектронныхПисем.РазмеченныйТекст - текст почтового сообщения в формате
// Rich Text.
// * Соединение - ИнтернетПочта - существующее соединение с почтовым сервером. Если не указано, то создается новое.
// * ПротоколПочты - Строка - если указано значение "IMAP", то письмо будет передано по протоколу IMAP, если по
// указано значение "Все", то по протоколу SMTP и по протоколу IMAP, если ничего не указано
// то по протоколу SMTP. Параметр имеет смысл, только наличии действующего соединения,
// указанного в параметр Соединение. В противном случае протокол будет определен
// автоматически при установке соединения.
// * ИдентификаторСообщения - Строка - (возвращаемый параметр) идентификатор отправленного почтового сообщения на SMTP-сервере;
// * ИдентификаторСообщенияОтправкаIMAP - Строка - (возвращаемый параметр) идентификатор отправленного почтового
// сообщения на IMAP сервере;
// * ОшибочныеПолучатели - Соответствие - (возвращаемый параметр) список адресов, по которым отправка не выполнена.
// См. возвращаемое значение метода ИнтернетПочта.Послать() в синтакс-помощнике.
//
// УдалитьСоединение - ИнтернетПочта - параметр устарел, см. параметр ПараметрыОтправки.Соединение.
// УдалитьПротоколПочты - Строка - параметр устарел, см. параметр ПараметрыОтправки.ПротоколПочты.
//
// Возвращаемое значение:
// Строка - идентификатор отправленного сообщения.
//
Функция ОтправитьПочтовоеСообщение(Знач УчетнаяЗапись, Знач ПараметрыОтправки,
Знач УдалитьСоединение = Неопределено, УдалитьПротоколПочты = "") Экспорт
Если УдалитьСоединение <> Неопределено Тогда
ПараметрыОтправки.Вставить("Соединение", УдалитьСоединение);
КонецЕсли;
Если Не ПустаяСтрока(УдалитьПротоколПочты) Тогда
ПараметрыОтправки.Вставить("ПротоколПочты", УдалитьПротоколПочты);
КонецЕсли;
Если ТипЗнч(УчетнаяЗапись) <> Тип("СправочникСсылка.УчетныеЗаписиЭлектроннойПочты")
Или НЕ ЗначениеЗаполнено(УчетнаяЗапись) Тогда
ВызватьИсключение НСтр("ru = 'Учетная запись не заполнена или заполнена неправильно.'");
КонецЕсли;
Если ПараметрыОтправки = Неопределено Тогда
ВызватьИсключение НСтр("ru = 'Не заданы параметры отправки.'");
КонецЕсли;
ТипЗнчКому = ?(ПараметрыОтправки.Свойство("Кому"), ТипЗнч(ПараметрыОтправки.Кому), Неопределено);
ТипЗнчКопии = ?(ПараметрыОтправки.Свойство("Копии"), ТипЗнч(ПараметрыОтправки.Копии), Неопределено);
СкрытыеКопии = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ПараметрыОтправки, "СкрытыеКопии");
Если СкрытыеКопии = Неопределено Тогда
СкрытыеКопии = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ПараметрыОтправки, "СлепыеКопии");
КонецЕсли;
Если ТипЗнчКому = Неопределено И ТипЗнчКопии = Неопределено И СкрытыеКопии = Неопределено Тогда
ВызватьИсключение НСтр("ru = 'Не указано ни одного получателя.'");
КонецЕсли;
Если ТипЗнчКому = Тип("Строка") Тогда
ПараметрыОтправки.Кому = ОбщегоНазначенияКлиентСервер.РазобратьСтрокуСПочтовымиАдресами(ПараметрыОтправки.Кому);
ИначеЕсли ТипЗнчКому <> Тип("Массив") Тогда
ПараметрыОтправки.Вставить("Кому", Новый Массив);
КонецЕсли;
Если ТипЗнчКопии = Тип("Строка") Тогда
ПараметрыОтправки.Копии = ОбщегоНазначенияКлиентСервер.РазобратьСтрокуСПочтовымиАдресами(ПараметрыОтправки.Копии);
ИначеЕсли ТипЗнчКопии <> Тип("Массив") Тогда
ПараметрыОтправки.Вставить("Копии", Новый Массив);
КонецЕсли;
Если ТипЗнч(СкрытыеКопии) = Тип("Строка") Тогда
ПараметрыОтправки.СкрытыеКопии = ОбщегоНазначенияКлиентСервер.РазобратьСтрокуСПочтовымиАдресами(СкрытыеКопии);
ИначеЕсли ТипЗнч(СкрытыеКопии) <> Тип("Массив") Тогда
ПараметрыОтправки.Вставить("СкрытыеКопии", Новый Массив);
КонецЕсли;
Если ПараметрыОтправки.Свойство("АдресОтвета") И ТипЗнч(ПараметрыОтправки.АдресОтвета) = Тип("Строка") Тогда
ПараметрыОтправки.АдресОтвета = ОбщегоНазначенияКлиентСервер.РазобратьСтрокуСПочтовымиАдресами(ПараметрыОтправки.АдресОтвета);
КонецЕсли;
РаботаСПочтовымиСообщениямиСлужебный.ОтправитьСообщение(УчетнаяЗапись, ПараметрыОтправки);
РаботаСПочтовымиСообщениямиПереопределяемый.ПослеОтправкиПисьма(ПараметрыОтправки);
Если ПараметрыОтправки.ОшибочныеПолучатели.Количество() > 0 Тогда
ТекстОшибки = НСтр("ru = 'Следующие почтовые адреса не были приняты почтовым сервером:'");
Для Каждого ОшибочныйПолучатель Из ПараметрыОтправки.ОшибочныеПолучатели Цикл
ТекстОшибки = ТекстОшибки + Символы.ПС + СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку("%1: %2",
ОшибочныйПолучатель.Ключ, ОшибочныйПолучатель.Значение);
КонецЦикла;
ВызватьИсключение ТекстОшибки;
КонецЕсли;
Возврат ПараметрыОтправки.ИдентификаторСообщения;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ИнтернетПочтовоеСообщениеИзПисьма (БСП)
СоздатьИОтправитьСообщениеSMS (БСП)
СформироватьСообщениеИОтправить (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)