Работа с электронной почтой (Отправка сообщений)   

Ниже приведен код функции глобального модуля:

Функция глОтправитьПисьмо(ПармПисьмо,ПармФайлы,ТипАдреса) Экспорт
    Если ТипЗначенияСтр(ПармПисьмо)<>"СписокЗначений" Тогда
        Сообщить("Неправильный формат переменных","!");
        Возврат 0;
    КонецЕсли;
    ТекРезультат=0;
    ТекАдрес=ПармПисьмо.Получить("Адрес");
    ТекТема=ПармПисьмо.Получить("Тема");
    ТекТекст=ПармПисьмо.Получить("ТекстСообщения");
    ТекАвтор=ПармПисьмо.Получить("Автор");
    Если ТипАдреса=1 Тогда
        Если глВнешняяПочта.Подключиться("Отправка")=1 Тогда
            //отправляем так
            глВнешняяПочта.Кодировка="koi8-r";
            глВнешняяПочта.АдресОтправителя="mailrobot@mydomain.ru";
            глВнешняяПочта.ИмяОтправителя=ТекАвтор;
            глВнешняяПочта.Тема=ТекТема;
            глВнешняяПочта.Тело=ТекТекст+РазделительСтрок+"С уважением, "+ТекАвтор;
            глВнешняяПочта.АдресПолучателя=ТекАдрес;
            Если ТипЗначенияСтр(ПармФайлы)="СписокЗначений" Тогда
                ТекВложения="";
                Для к=1 по ПармФайлы.РазмерСписка() Цикл
                    ТекВложения=ТекВложения+?(к=1,"",";")+ПармФайлы.ПолучитьЗначение(к);
                КонецЦикла;
                глВнешняяПочта.Вложения=ТекВложения;
            Иначе
                глВнешняяПочта.Вложения="";
            КонецЕсли;
            Если глВнешняяПочта.Отправить()=1 Тогда
                //получилось
                ТекРезультат=1;
                Сообщить("Почта отправлена напрямую на адрес "+ТекАдрес,"i");
            Иначе
                //не получилось
            КонецЕсли;
            глВнешняяПочта.Отключиться();
        КонецЕсли;
    ИначеЕсли ТипАдреса=0 Тогда
        Если глПрямаяПочта.Подключиться("Отправка")=1 Тогда
            //отправляем так
            глПрямаяПочта.Кодировка="koi8-r";
            глПрямаяПочта.АдресОтправителя="mailrobot@mydomain.local";
            глПрямаяПочта.ИмяОтправителя=ТекАвтор;
            глПрямаяПочта.Тема=ТекТема;
            глПрямаяПочта.Тело=ТекТекст+РазделительСтрок+"С уважением, "+ТекАвтор;
            глПрямаяПочта.АдресПолучателя=ТекАдрес;
            Если ТипЗначенияСтр(ПармФайлы)="СписокЗначений" Тогда
                ТекВложения="";
                Для к=1 по ПармФайлы.РазмерСписка() Цикл
                    ТекВложения=ТекВложения+?(к=1,"",";")+ПармФайлы.ПолучитьЗначение(к);
                КонецЦикла;
                глПрямаяПочта.Вложения=ТекВложения;
            Иначе
                глПрямаяПочта.Вложения="";
            КонецЕсли;
            Если глПрямаяПочта.Отправить()=1 Тогда
                //получилось
                ТекРезультат=1;
                Сообщить("Почта отправлена напрямую на адрес "+ТекАдрес,"i");
            Иначе
                //не получилось
            КонецЕсли;
            глПрямаяПочта.Отключиться();
        КонецЕсли;
        Если ТекРезультат=0 Тогда
            глПочта.Подключиться("MAPI","","");
            глПочта.НовоеСообщение();
            глПочта.ДобавитьАдрес(ТекАдрес);
            глПочта.Заголовок=ТекТема;
            глПочта.Текст=ТекТекст;
            Если ТипЗначенияСтр(ПармФайлы)="СписокЗначений" Тогда
                Для к=1 по ПармФайлы.РазмерСписка() Цикл
                    глПочта.ДобавитьФайл(ПармФайлы.ПолучитьЗначение(к));
                КонецЦикла;
            КонецЕсли;
            Попытка
                глПочта.Послать();
                ТекРезультат=1;
            Исключение
                ТекРезультат=0;
            КонецПопытки;
        КонецЕсли;
    Иначе
        Сообщить("Неверный тип адреса почты"+ТекАдрес,"!!!");
    КонецЕсли;
    Если ТекРезультат=1 Тогда
        ЗаписьЖурналаРегистрации("<"+ТекАдрес+"> "+ТекТема,"Почта","Отправлена",,3);
    Иначе
        ЗаписьЖурналаРегистрации("<"+ТекАдрес+"> "+ТекТема,"Почта","Ошибка",,5);
    КонецЕсли;
    Возврат ТекРезультат;
КонецФункции

Вернуться к статье "Работа с электронной почтой"