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

Автор: 1С
ОбщийМодуль.РаботаСПочтовымиСообщениями
БСП

Отправить почтовое сообщение. Выполняет отправку почтовых сообщений.

// Выполняет отправку почтовых сообщений.
// Функция может вызвать исключение, которое требуется обработать.
//
// Параметры:
//  УчетнаяЗапись - СправочникСсылка.УчетныеЗаписиЭлектроннойПочты - ссылка на
//                 учетную запись электронной почты.
//  ПараметрыОтправки - Структура - содержит всю необходимую информацию о письме:
//
//   * Кому - Массив, Строка - интернет адреса получателей письма.
//          - Массив - коллекция структур адресов:
//              * Адрес         - Строка - почтовый адрес (должно быть обязательно заполнено).
//              * Представление - Строка - имя адресата.
//          - Строка - интернет-адреса получателей письма, разделитель - ";".
//
//   * ПолучателиСообщения - Массив - массив структур, описывающий получателей:
//      ** Адрес - Строка - почтовый адрес получателя сообщения.
//      ** Представление - Строка - представление адресата.
//
//   * Копии        - Массив, Строка - адреса получателей копий письма. См. описание поля Кому.
//
//   * СкрытыеКопии - Массив, Строка - адреса получателей скрытых копий письма. См. описание поля Кому.
//
//   * Тема       - Строка - (обязательный) тема почтового сообщения.
//   * Тело       - Строка - (обязательный) текст почтового сообщения (простой текст в кодировке 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 (БСП)

СформироватьСообщениеИОтправить (БСП)

ЗагрузитьПочтовыеСообщения (БСП)

ОтправитьДанныеСообщенияВТехПоддержку (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз