v8: Функция по отправке извещений по e-mail из 1С (Рыба)
Не изобретаю велосипед, не открываю америку, просто показываю шаблон функции для отправки сообщения из 1С, например для информирования администраторов об завершении плановых работ в 1С или для извещения пользователей о некоторых этапах работы | Автор статьи: Гений 1С | Редакторы: Последняя редакция №2 от 14.08.06 | |
Ключевые слова: e-mail,почта,функция
В структуре Умолчания нужно указать параметры SMTP-сервера, которые будут использоваться по умолчанию.
Буду благодарен, если кто-нибудь разовьет функцию, чтобы передавались все параметры. ;-)
Вот собственно функция:
//Функция для отправки извещений от 1С через e-mail. fixin 20060814 //Параметры структуры //Получатели - e-mail получателя в виде строки или массив таких строк //Текст - текст сообщения //ТипТекста - тип теста, тип ТипТекстаПочтовогоСообщения //Вложения - имя файла вложения или массив имен //Отправитель - e-mail отправителя //ИмяОтправителя - имя отправителя (любой текст) //АдресSMTPСервера - адрес SMTP сервера //ПортSMTP - порт SMTP сервера (число) //ПарольSMTP - пароль SMTP сервера //АутентификацияSMTP - булево (истинга) //Возврат: //истина - ошибок нет, ложь - есть ошибки //В атрибуте "ОписаниеОшибки" - описание ошибки. Функция обОтправитьИзвещениеПочтой(П) Экспорт Перем Умолчания; Перем АдресSMTPСервера, ПортSMTP, ПользовательSMTP, ПарольSMTP, АутентификацияSMTP; Перем ИнтернетПочта, Профиль, Сообщение; Перем Получатели, Тема, Текст; Перем ИмяОтправителя,Отправитель,Вложения, ОписаниеОшибки; //Значения по умолчанию Умолчания=Новый Структура( "АдресSMTPСервера,ПортSMTP,ПользовательSMTP,ПарольSMTP,АутентификацияSMTP", "smtp.ru", 25, "1CRobot", "password", истина); //В П не вставляются параметры подключения из соображений безопасности. Если НЕ П.Свойство("АдресSMTPСервера", АдресSMTPСервера) Тогда АдресSMTPСервера=Умолчания.АдресSMTPСервера; КонецЕсли; Если НЕ П.Свойство("ПортSMTP", ПортSMTP) Тогда ПортSMTP=Умолчания.ПортSMTP; КонецЕсли; Если НЕ П.Свойство("ПользовательSMTP", ПользовательSMTP) Тогда ПользовательSMTP=Умолчания.ПользовательSMTP; КонецЕсли; Если НЕ П.Свойство("ПарольSMTP", ПарольSMTP) Тогда ПарольSMTP=Умолчания.ПарольSMTP; КонецЕсли; Если НЕ П.Свойство("АутентификацияSMTP", АутентификацияSMTP) Тогда АутентификацияSMTP=Умолчания.АутентификацияSMTP; КонецЕсли; ИнтернетПочта = Новый ИнтернетПочта; Профиль = Новый ИнтернетПочтовыйПрофиль; Профиль.АдресСервераSMTP = АдресSMTPСервера; Профиль.ПортSMTP = ПортSMTP; Если АутентификацияSMTP Тогда Профиль.ПользовательSMTP = ПользовательSMTP; Профиль.ПарольSMTP = ПарольSMTP; КонецЕсли; Если НЕ П.Свойство("Получатели") Тогда П.Вставить("Ошибка", истина); П.Вставить("ОписаниеОшибки", "Не указан получатель"); Возврат ложь; КонецЕсли; Если ТипЗнч(П.Получатели)=Тип("Массив") Тогда Получатели=П.Получатели; Иначе Получатели=Новый Массив(); Получатели.Добавить(П.Получатели); КонецЕсли; Если П.Свойство("Тема") Тогда Тема=П.Тема; Иначе Тема="Без темы"; КонецЕсли; Если П.Свойство("Текст") Тогда Текст=П.Текст; Иначе Текст=Неопределено; КонецЕсли; Если П.Свойство("ТипТекста") Тогда ТипТекста=П.ТипТекста; Иначе ТипТекста=ТипТекстаПочтовогоСообщения.ПростойТекст; КонецЕсли; Если П.Свойство("ИмяОтправителя") Тогда ИмяОтправителя=П.ИмяОтправителя; Иначе ИмяОтправителя="Робот"; КонецЕсли; Если П.Свойство("Отправитель") Тогда Отправитель=П.Отправитель; Иначе Отправитель=ПользовательSMTP+"@"+АдресSMTPСервера; КонецЕсли; Если НЕ П.Свойство("Вложения") Тогда Вложения=Новый Массив(); Иначе Если ТипЗнч(П.Вложения)=Тип("Массив") Тогда Вложения=П.Вложения; Иначе Вложения=Новый Массив(); Вложения.Добавить(П.Вложения); КонецЕсли; КонецЕсли; Попытка ИнтернетПочта.Подключиться(Профиль); Сообщение = Новый ИнтернетПочтовоеСообщение; Сообщение.Тема = Тема; Для Каждого Получатель Из Получатели Цикл Сообщение.Получатели.Добавить(Получатель); КонецЦикла; Сообщение.ИмяОтправителя = ИмяОтправителя; Сообщение.Отправитель = Отправитель; Для Каждого Вложение Из Вложения Цикл Сообщение.Вложения.Добавить(Вложение); КонецЦикла; Если Текст<>Неопределено Тогда Сообщение.Тексты.Добавить(Текст, ТипТекста); КонецЕсли; ИнтернетПочта.Послать(Сообщение); ИнтернетПочта.Отключиться(); П.Вставить("Ошибка", ложь); Возврат истина; Исключение ОписаниеОшибки=ОписаниеОшибки(); П.Вставить("Ошибка", истина); П.Вставить("ОписаниеОшибки", ОписаниеОшибки); Возврат ложь; КонецПопытки; КонецФункции