Книга знаний

1С:Предприятие / v8 / Приемы программирования / Интернет-технологии

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Сервера;
    КонецЕсли;
    
    Если НЕ П.Свойство("Вложения") Тогда
        Вложения=Новый Массив();
    Иначе
        Если ТипЗнч(П.Вложения)=Тип("Массив") Тогда
            Вложения=П.Вложения;
        Иначе
            Вложения=Новый Массив();
            Вложения.Добавить(П.Вложения);
        КонецЕсли;
    КонецЕсли;


    Попытка
        ИнтернетПочта.Подключиться(Профиль);
        Сообщение = Новый ИнтернетПочтовоеСообщение;
        Сообщение.Тема = Тема;        
        Для Каждого Получатель Из Получатели Цикл
            Сообщение.Получатели.Добавить(Получатель);
        КонецЦикла;
        Сообщение.ИмяОтправителя = ИмяОтправителя;
        Сообщение.Отправитель = Отправитель;                
        Для Каждого Вложение Из Вложения Цикл
            Сообщение.Вложения.Добавить(Вложение);
        КонецЦикла;
        Если Текст<>Неопределено Тогда
            Сообщение.Тексты.Добавить(Текст, ТипТекста);
        КонецЕсли;
        ИнтернетПочта.Послать(Сообщение);
        ИнтернетПочта.Отключиться();
        П.Вставить("Ошибка", ложь);
        Возврат истина; 
    Исключение
        ОписаниеОшибки=ОписаниеОшибки();
        П.Вставить("Ошибка", истина);
        П.Вставить("ОписаниеОшибки", ОписаниеОшибки);
        Возврат ложь; 
    КонецПопытки;
КонецФункции

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика