sozdat_i_otpravit_pismo_programmno

Создать и отправить єлектронное письмо email программно

&НаСервере
Процедура УведомитьВПисьме (ПолучательУведомления,Ошибки,ОсталосьКарточек,ОсталосьДней)
	
	//тут массив с емаилами
        СписокПолучателей								=	ОпределитьЕМаилПолучателя(ПолучательУведомления); 
	
	Если СписокПолучателей.Количество()=0 Тогда Возврат; КонецЕсли;
	
	
	НовоеПисьмоИсходящее							=	Документы.ЭлектронноеПисьмоИсходящее.СоздатьДокумент();
	НовоеПисьмоИсходящее.Автор						=	ПараметрыСеанса.ТекущийПользователь;
	НовоеПисьмоИсходящее.УчетнаяЗапись				=	Справочники.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты;
	НовоеПисьмоИсходящее.Дата						=	ТекущаяДата();
	НовоеПисьмоИсходящее.ДатаКогдаОтправить			=	НовоеПисьмоИсходящее.Дата+3;
	НовоеПисьмоИсходящее.Кодировка					=	"UTF-8";
	НовоеПисьмоИсходящее.Важность					=	Перечисления.ВариантыВажностиВзаимодействия.Высокая;
	
	НовоеПисьмоИсходящее.ТипТекста                  =	Перечисления.ТипыТекстовЭлектронныхПисем.ПростойТекст;
	НовоеПисьмоИсходящее.ОтправительПредставление	=	"BAS УТ (торговая)";
	НовоеПисьмоИсходящее.Тема						=	"ВНИМАНИЕ ! ПАКТУМ-Контрагент осталось "+ОсталосьКарточек+" карточек и "+цел(ОсталосьДней)+" дней";
	НовоеПисьмоИсходящее.Текст                      =	Ошибки;
	НовоеПисьмоИсходящее.Комментарий    			=	"Создано автоматически ПАКТУМ-уведомлением: "+ТекущаяДата();
	
	Для Каждого СтрокаПолучаетелей из СписокПолучателей Цикл
		Если НЕ ПустаяСтрока(СтрокаПолучаетелей) Тогда
			НоваяЗаписьОПолучателе							=	НовоеПисьмоИсходящее.ПолучателиПисьма.Добавить();
			НоваяЗаписьОПолучателе.Адрес					=	СокрЛП(СтрокаПолучаетелей);
			НовоеПисьмоИсходящее.СписокПолучателейПисьма	=	НовоеПисьмоИсходящее.СписокПолучателейПисьма+СокрЛП(СтрокаПолучаетелей)+";";
		КонецЕсли;
	КонецЦикла;

	
	Попытка
		НовоеПисьмоИсходящее.Записать(РежимЗаписиДокумента.Запись);
		ПисьмоОбъект						= НовоеПисьмоИсходящее.Ссылка.ПолучитьОбъект();
		ИдентификаторПисьма 				= Взаимодействия.ВыполнитьОтправкуПисьма(ПисьмоОбъект);
		ПисьмоОбъект.ИдентификаторСообщения = ИдентификаторПисьма;
		ПисьмоОбъект.СтатусПисьма    		= Перечисления.СтатусыИсходящегоЭлектронногоПисьма.Отправлено;
		ПисьмоОбъект.ДатаОтправления 		= ТекущаяДатаСеанса();
		ПисьмоОбъект.Записать(РежимЗаписиДокумента.Запись);
	Исключение
		
	КонецПопытки;

	
КонецПроцедуры
Функция ОтправитьТабличныйДокументЭлектроннойПочтойКакPDF(УчетнаяЗаписьПочтыОтправителя, ПочтаПолучателя, ТекстПисьма, ТемаПисьма, АдресТабличногоДокументаВоВременномХранилище, ДокументОснование=Неопределено)
	
	УспешноОтправлено = Ложь;
	
	Если УчетнаяЗаписьПочтыОтправителя = Неопределено Или УчетнаяЗаписьПочтыОтправителя.Пустая() Тогда	
		Возврат УспешноОтправлено;			
	КонецЕсли; 
	
	СписокПолучателей								=	Новый Массив;
	СписокПолучателей.Добавить(ПочтаПолучателя);	
	
	ВременноеХранилищеФайла = ПоместитьВоВременноеХранилище(АдресТабличногоДокументаВоВременномХранилище, Новый УникальныйИдентификатор);
	//Вложения = Новый Массив;
	//ОписаниеВложения = Новый Структура("Представление, АдресВоВременномХранилище", РегистрыСведений.РегистрКонстант.ПолучитьЗначениеКонстанты("Наименование вложения в письме") + "Рахунок.pdf", ВременноеХранилищеФайла);
	//Вложения.Добавить(ОписаниеВложения);
	
	НовоеПисьмоИсходящее							=	Документы.ЭлектронноеПисьмоИсходящее.СоздатьДокумент();
	
	НовоеПисьмоИсходящее.Автор						=	ПараметрыСеанса.ТекущийПользователь;
	НовоеПисьмоИсходящее.УчетнаяЗапись				=	УчетнаяЗаписьПочтыОтправителя;
	НовоеПисьмоИсходящее.Дата						=	ТекущаяДата();
	НовоеПисьмоИсходящее.ДатаКогдаОтправить			=	НовоеПисьмоИсходящее.Дата+1;
	НовоеПисьмоИсходящее.Кодировка					=	"UTF-8";
	НовоеПисьмоИсходящее.Важность					=	Перечисления.ВариантыВажностиВзаимодействия.Обычная;
	
	НовоеПисьмоИсходящее.ТипТекста                  =	Перечисления.ТипыТекстовЭлектронныхПисем.ПростойТекст;
	НовоеПисьмоИсходящее.ЕстьВложения				=	Истина;	
	НовоеПисьмоИсходящее.Тема						=	ТемаПисьма;
	НовоеПисьмоИсходящее.Текст                      =	ТекстПисьма;
	НовоеПисьмоИсходящее.Основание					=	ДокументОснование;	
	НовоеПисьмоИсходящее.Комментарий    			=	"Создано автоматически при авто-создании счетов: "+ТекущаяДата();

	Для Каждого СтрокаПолучаетелей из СписокПолучателей Цикл
		Если НЕ ПустаяСтрока(СтрокаПолучаетелей) Тогда
			НоваяЗаписьОПолучателе							=	НовоеПисьмоИсходящее.ПолучателиПисьма.Добавить();
			НоваяЗаписьОПолучателе.Адрес					=	СокрЛП(СтрокаПолучаетелей);
			НовоеПисьмоИсходящее.СписокПолучателейПисьма	=	НовоеПисьмоИсходящее.СписокПолучателейПисьма+СокрЛП(СтрокаПолучаетелей)+";";
		КонецЕсли;
	КонецЦикла;
	
	
	Попытка
		НовоеПисьмоИсходящее.Записать(РежимЗаписиДокумента.Запись);
		УспешноЗаписано	=	Истина;
	Исключение
		ЗаписьЖурналаРегистрации("Отправка письма счетов", УровеньЖурналаРегистрации.Ошибка,,,"Ошибка отправки письма с авто-счетом "+ПочтаПолучателя+", "+ОписаниеОшибки());
		УспешноЗаписано	=	Ложь;	
	КонецПопытки;
	
	Если УспешноЗаписано Тогда  
		
		//Добавляем вложение с ВременногоХранилища. Вложение добавляется только к ссылке
		УправлениеЭлектроннойПочтой.ЗаписатьВложениеЭлектронногоПисьмаИзВременногоХранилища(НовоеПисьмоИсходящее.Ссылка,ВременноеХранилищеФайла,РегистрыСведений.РегистрКонстант.ПолучитьЗначениеКонстанты("Наименование вложения в письме") + "Рахунок.pdf",12);

		Попытка	
			ПисьмоОбъект						= НовоеПисьмоИсходящее.Ссылка.ПолучитьОбъект();
			ИдентификаторПисьма 				= Взаимодействия.ВыполнитьОтправкуПисьма(ПисьмоОбъект);
			ПисьмоОбъект.ИдентификаторСообщения = ИдентификаторПисьма;
			ПисьмоОбъект.СтатусПисьма    		= Перечисления.СтатусыИсходящегоЭлектронногоПисьма.Отправлено;
			ПисьмоОбъект.ДатаОтправления 		= ТекущаяДатаСеанса();
			ПисьмоОбъект.Записать(РежимЗаписиДокумента.Запись); 
			
			УспешноОтправлено	=	Не ПустаяСтрока(ИдентификаторПисьма);
		Исключение
			ЗаписьЖурналаРегистрации("Отправка письма счетов", УровеньЖурналаРегистрации.Ошибка,,,"Ошибка отправки письма с авто-счетом "+ПочтаПолучателя+", "+ОписаниеОшибки());
			УспешноОтправлено	=	Ложь;	
		КонецПопытки;
		
	КонецЕсли;
	
	Возврат УспешноОтправлено;
	
КонецФункции
ПараметрыПисьма = Новый Структура;
ПараметрыПисьма.Вставить("Кому", "denis.mamchencko@gmail.com;e.dvorkina@viatec.ua;y.trotskiy@viatec.ua");
ПараметрыПисьма.Вставить("Тема", "Механизм автоперемещения не сработал");
ПараметрыПисьма.Вставить("Тело", ОписаниеОшибки());
ПараметрыПисьма.Вставить("ТипТекста", "ПростойТекст");
					
Попытка
	Идентификатор = РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(Справочники.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты, ПараметрыПисьма);
	Если ЗначениеЗаполнено(Идентификатор) Тогда							
	Отправлено = Истина;
	КонецЕсли;	
Исключение	
КонецПопытки;
  • /sites/data/pages/sozdat_i_otpravit_pismo_programmno.txt
  • Последнее изменение: 2024/12/18 13:54
  • tro