ВыполнитьОтправкуПисьма (БСП)

Автор: 1С
ОбщийМодуль.Взаимодействия
БСП

Выполнить отправку письма. Выполняет отправку электронного письма.

// Выполняет отправку электронного письма.
//
// Параметры:
//  Объект - ДокументОбъект.ЭлектронноеПисьмоИсходящее - отправляемое письмо.
//
// Возвращаемое значение:
//   Строка   - идентификатор почтового сообщения.
//
Функция ВыполнитьОтправкуПисьма(Объект, Соединение = Неопределено, ПараметрыПисьма = Неопределено, ПротоколПочты = "") Экспорт
	
	Если ПротоколПочты <> "" И ПротоколПочты <> "Все" И ПротоколПочты <> "IMAP" Тогда
		Возврат Неопределено;
	КонецЕсли;
	
	Если ПараметрыПисьма = Неопределено Тогда
		ПараметрыПисьма = ПараметрыПисьмаДляОтправки(Объект);
	КонецЕсли;
	
	Если Соединение = Неопределено Тогда
		
		Профиль = РаботаСПочтовымиСообщениямиСлужебный.ИнтернетПочтовыйПрофиль(Объект.УчетнаяЗапись);
	
		Попытка
			
			Соединение = Новый ИнтернетПочта;
			ПротоколПодключения = ?(ПустаяСтрока(Профиль.АдресСервераIMAP),ПротоколИнтернетПочты.POP3, ПротоколИнтернетПочты.IMAP);
			Соединение.Подключиться(Профиль, ПротоколПодключения);
			
			ПротоколПочты = "";
			
			Если ПротоколПодключения = ПротоколИнтернетПочты.IMAP Тогда
				
				Если Не (Объект.УдалятьПослеОтправки
					Или УправлениеЭлектроннойПочтой.СерверИсходящейПочтыНеТребуетДополнительнойОтправкиПоIMAP(Профиль.АдресСервераSMTP)) Тогда
					
					ПочтовыеЯщики = Соединение.ПолучитьПочтовыеЯщики();
					Для Каждого ПочтовыйЯщик Из ПочтовыеЯщики Цикл
						Если НРег(ПочтовыйЯщик) = "отправленные"
							Или НРег(ПочтовыйЯщик) = "sent" Тогда
							
							Соединение.ТекущийПочтовыйЯщик = ПочтовыйЯщик;
							ПротоколПочты = "Все";
							Прервать;
							
						КонецЕсли;
					КонецЦикла;
					
				КонецЕсли;
				
			КонецЕсли;
			
		Исключение
			
			ТекстСообщенияОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
				НСтр("ru = 'Во время подключения к учетной записи %1 произошла ошибка
					|%2'", ОбщегоНазначения.КодОсновногоЯзыка()),
				Объект.УчетнаяЗапись,
				КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
			
			ОбщегоНазначения.СообщитьПользователю(ТекстСообщенияОбОшибке, Объект.УчетнаяЗапись);
			
		КонецПопытки;
		
	КонецЕсли;
	
	ПараметрыПисьма.Вставить("Соединение", Соединение);
	
	ПараметрыПисьма.Вставить("ПротоколПочты", ПротоколПочты);
	
	ИдентификаторПисьма = РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(Объект.УчетнаяЗапись, ПараметрыПисьма);
	
	Если ПротоколПочты = "" Тогда
		Объект.ИдентификаторСообщения = ПараметрыПисьма.ИдентификаторСообщения;
	ИначеЕсли ПротоколПочты = "IMAP" Тогда
		Объект.ИдентификаторСообщенияОтправкаIMAP = ПараметрыПисьма.ИдентификаторСообщенияОтправкаIMAP;
	ИначеЕсли ПротоколПочты = "Все" Тогда
		Объект.ИдентификаторСообщения = ПараметрыПисьма.ИдентификаторСообщения;
		Объект.ИдентификаторСообщенияОтправкаIMAP = ПараметрыПисьма.ИдентификаторСообщенияОтправкаIMAP;
	КонецЕсли;
	
	Возврат ИдентификаторПисьма;
	
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ПослеОтправкиПисьма (БСП)

ПараметрыОтправкиПисьма (БСП)

ОткрытьФормуОтправкиПисьма (БСП)

ПередОткрытиемФормыОтправкиПисьма (БСП)

ПередОтправкойПоПочте (БСП)

УстановитьПризнакОтправкиУведомления (БСП)

ДобавитьВПараметрАдресатов (БСП)

ПриОтправкеФайловПочтой (БСП)

НастройкаОтправкиSMSВыполнена (БСП)

TurboConf - расширение Конфигуратора 1С