v8: Функция по отправке извещений по e-mail из 1С (Рыба)Не изобретаю велосипед, не открываю америку, просто показываю шаблон функции для отправки сообщения из 1С, например для информирования администраторов об завершении плановых работ в 1С или для извещения пользователей о некоторых этапах работы | | Автор статьи: Гений 1С | Редакторы: Последняя редакция №2 от 14.08.06 | История URL: http://kb.mista.ru/article.php?id=329 | |
Ключевые слова: 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Сервера;
КонецЕсли;
Если НЕ П.Свойство("Вложения") Тогда
Вложения=Новый Массив();
Иначе
Если ТипЗнч(П.Вложения)=Тип("Массив") Тогда
Вложения=П.Вложения;
Иначе
Вложения=Новый Массив();
Вложения.Добавить(П.Вложения);
КонецЕсли;
КонецЕсли;
Попытка
ИнтернетПочта.Подключиться(Профиль);
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.Тема = Тема;
Для Каждого Получатель Из Получатели Цикл
Сообщение.Получатели.Добавить(Получатель);
КонецЦикла;
Сообщение.ИмяОтправителя = ИмяОтправителя;
Сообщение.Отправитель = Отправитель;
Для Каждого Вложение Из Вложения Цикл
Сообщение.Вложения.Добавить(Вложение);
КонецЦикла;
Если Текст<>Неопределено Тогда
Сообщение.Тексты.Добавить(Текст, ТипТекста);
КонецЕсли;
ИнтернетПочта.Послать(Сообщение);
ИнтернетПочта.Отключиться();
П.Вставить("Ошибка", ложь);
Возврат истина;
Исключение
ОписаниеОшибки=ОписаниеОшибки();
П.Вставить("Ошибка", истина);
П.Вставить("ОписаниеОшибки", ОписаниеОшибки);
Возврат ложь;
КонецПопытки;
КонецФункции |