====== Создать и отправить єлектронное письмо email программно ====== ===== Вариант 1 (с сохранением отправленного письма в док.ИсходящиеПисьма ===== &НаСервере Процедура УведомитьВПисьме (ПолучательУведомления,Ошибки,ОсталосьКарточек,ОсталосьДней) //тут массив с емаилами СписокПолучателей = ОпределитьЕМаилПолучателя(ПолучательУведомления); Если СписокПолучателей.Количество()=0 Тогда Возврат; КонецЕсли; НовоеПисьмоИсходящее = Документы.ЭлектронноеПисьмоИсходящее.СоздатьДокумент(); НовоеПисьмоИсходящее.Автор = ПараметрыСеанса.ТекущийПользователь; НовоеПисьмоИсходящее.УчетнаяЗапись = Справочники.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты; НовоеПисьмоИсходящее.Дата = ТекущаяДата(); НовоеПисьмоИсходящее.ДатаКогдаОтправить = НовоеПисьмоИсходящее.Дата+3; НовоеПисьмоИсходящее.Кодировка = "UTF-8"; НовоеПисьмоИсходящее.Важность = Перечисления.ВариантыВажностиВзаимодействия.Высокая; НовоеПисьмоИсходящее.ТипТекста = Перечисления.ТипыТекстовЭлектронныхПисем.ПростойТекст; НовоеПисьмоИсходящее.ОтправительПредставление = "BAS УТ (торговая)"; НовоеПисьмоИсходящее.Тема = "ВНИМАНИЕ ! ПАКТУМ-Контрагент осталось "+ОсталосьКарточек+" карточек и "+цел(ОсталосьДней)+" дней"; НовоеПисьмоИсходящее.Текст = Ошибки; НовоеПисьмоИсходящее.Комментарий = "Создано автоматически ПАКТУМ-уведомлением: "+ТекущаяДата(); Для Каждого СтрокаПолучаетелей из СписокПолучателей Цикл Если НЕ ПустаяСтрока(СтрокаПолучаетелей) Тогда НоваяЗаписьОПолучателе = НовоеПисьмоИсходящее.ПолучателиПисьма.Добавить(); НоваяЗаписьОПолучателе.Адрес = СокрЛП(СтрокаПолучаетелей); НовоеПисьмоИсходящее.СписокПолучателейПисьма = НовоеПисьмоИсходящее.СписокПолучателейПисьма+СокрЛП(СтрокаПолучаетелей)+";"; КонецЕсли; КонецЦикла; Попытка НовоеПисьмоИсходящее.Записать(РежимЗаписиДокумента.Запись); ПисьмоОбъект = НовоеПисьмоИсходящее.Ссылка.ПолучитьОбъект(); ИдентификаторПисьма = Взаимодействия.ВыполнитьОтправкуПисьма(ПисьмоОбъект); ПисьмоОбъект.ИдентификаторСообщения = ИдентификаторПисьма; ПисьмоОбъект.СтатусПисьма = Перечисления.СтатусыИсходящегоЭлектронногоПисьма.Отправлено; ПисьмоОбъект.ДатаОтправления = ТекущаяДатаСеанса(); ПисьмоОбъект.Записать(РежимЗаписиДокумента.Запись); Исключение КонецПопытки; КонецПроцедуры ===== Вариант 2 с добавлением вложения в письмо ===== Функция ОтправитьТабличныйДокументЭлектроннойПочтойКакPDF(УчетнаяЗаписьПочтыОтправителя, ПочтаПолучателя, ТекстПисьма, ТемаПисьма, АдресТабличногоДокументаВоВременномХранилище, ДокументОснование=Неопределено) УспешноОтправлено = Ложь; Если УчетнаяЗаписьПочтыОтправителя = Неопределено Или УчетнаяЗаписьПочтыОтправителя.Пустая() Тогда Возврат УспешноОтправлено; КонецЕсли; СписокПолучателей = Новый Массив; СписокПолучателей.Добавить(ПочтаПолучателя); ВременноеХранилищеФайла = ПоместитьВоВременноеХранилище(АдресТабличногоДокументаВоВременномХранилище, Новый УникальныйИдентификатор); //Вложения = Новый Массив; //ОписаниеВложения = Новый Структура("Представление, АдресВоВременномХранилище", РегистрыСведений.РегистрКонстант.ПолучитьЗначениеКонстанты("Наименование вложения в письме") + "Рахунок.pdf", ВременноеХранилищеФайла); //Вложения.Добавить(ОписаниеВложения); НовоеПисьмоИсходящее = Документы.ЭлектронноеПисьмоИсходящее.СоздатьДокумент(); НовоеПисьмоИсходящее.Автор = ПараметрыСеанса.ТекущийПользователь; НовоеПисьмоИсходящее.УчетнаяЗапись = УчетнаяЗаписьПочтыОтправителя; НовоеПисьмоИсходящее.Дата = ТекущаяДата(); НовоеПисьмоИсходящее.ДатаКогдаОтправить = НовоеПисьмоИсходящее.Дата+1; НовоеПисьмоИсходящее.Кодировка = "UTF-8"; НовоеПисьмоИсходящее.Важность = Перечисления.ВариантыВажностиВзаимодействия.Обычная; НовоеПисьмоИсходящее.ТипТекста = Перечисления.ТипыТекстовЭлектронныхПисем.ПростойТекст; НовоеПисьмоИсходящее.ЕстьВложения = Истина; НовоеПисьмоИсходящее.Тема = ТемаПисьма; НовоеПисьмоИсходящее.Текст = ТекстПисьма; НовоеПисьмоИсходящее.Основание = ДокументОснование; НовоеПисьмоИсходящее.Комментарий = "Создано автоматически при авто-создании счетов: "+ТекущаяДата(); Для Каждого СтрокаПолучаетелей из СписокПолучателей Цикл Если НЕ ПустаяСтрока(СтрокаПолучаетелей) Тогда НоваяЗаписьОПолучателе = НовоеПисьмоИсходящее.ПолучателиПисьма.Добавить(); НоваяЗаписьОПолучателе.Адрес = СокрЛП(СтрокаПолучаетелей); НовоеПисьмоИсходящее.СписокПолучателейПисьма = НовоеПисьмоИсходящее.СписокПолучателейПисьма+СокрЛП(СтрокаПолучаетелей)+";"; КонецЕсли; КонецЦикла; Попытка НовоеПисьмоИсходящее.Записать(РежимЗаписиДокумента.Запись); УспешноЗаписано = Истина; Исключение ЗаписьЖурналаРегистрации("Отправка письма счетов", УровеньЖурналаРегистрации.Ошибка,,,"Ошибка отправки письма с авто-счетом "+ПочтаПолучателя+", "+ОписаниеОшибки()); УспешноЗаписано = Ложь; КонецПопытки; Если УспешноЗаписано Тогда //Добавляем вложение с ВременногоХранилища. Вложение добавляется только к ссылке УправлениеЭлектроннойПочтой.ЗаписатьВложениеЭлектронногоПисьмаИзВременногоХранилища(НовоеПисьмоИсходящее.Ссылка,ВременноеХранилищеФайла,РегистрыСведений.РегистрКонстант.ПолучитьЗначениеКонстанты("Наименование вложения в письме") + "Рахунок.pdf",12); Попытка ПисьмоОбъект = НовоеПисьмоИсходящее.Ссылка.ПолучитьОбъект(); ИдентификаторПисьма = Взаимодействия.ВыполнитьОтправкуПисьма(ПисьмоОбъект); ПисьмоОбъект.ИдентификаторСообщения = ИдентификаторПисьма; ПисьмоОбъект.СтатусПисьма = Перечисления.СтатусыИсходящегоЭлектронногоПисьма.Отправлено; ПисьмоОбъект.ДатаОтправления = ТекущаяДатаСеанса(); ПисьмоОбъект.Записать(РежимЗаписиДокумента.Запись); УспешноОтправлено = Не ПустаяСтрока(ИдентификаторПисьма); Исключение ЗаписьЖурналаРегистрации("Отправка письма счетов", УровеньЖурналаРегистрации.Ошибка,,,"Ошибка отправки письма с авто-счетом "+ПочтаПолучателя+", "+ОписаниеОшибки()); УспешноОтправлено = Ложь; КонецПопытки; КонецЕсли; Возврат УспешноОтправлено; КонецФункции ===== Вариант 3 (без сохранения в док.ИсходящиеЭлектронныеСообщения) ===== ПараметрыПисьма = Новый Структура; ПараметрыПисьма.Вставить("Кому", "denis.mamchencko@gmail.com;e.dvorkina@viatec.ua;y.trotskiy@viatec.ua"); ПараметрыПисьма.Вставить("Тема", "Механизм автоперемещения не сработал"); ПараметрыПисьма.Вставить("Тело", ОписаниеОшибки()); ПараметрыПисьма.Вставить("ТипТекста", "ПростойТекст"); Попытка Идентификатор = РаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(Справочники.УчетныеЗаписиЭлектроннойПочты.СистемнаяУчетнаяЗаписьЭлектроннойПочты, ПараметрыПисьма); Если ЗначениеЗаполнено(Идентификатор) Тогда Отправлено = Истина; КонецЕсли; Исключение КонецПопытки;