среда, 22 июня 2016 г.

Отправка электронной почты из 1с на внешние адреса

Функция, которая позволяет отправить электронное письмо на внешние ящики, в обход не возможности работы по ssl 1с 8.2:

Функция ПослатьПоПочте(ТемаСообщения = "",СообщениеТекст = "" ,СписокВложений = "")Экспорт
   
    Оправитель = "aaaaaa@yandex.ru";//Необходимо завести на Яндексе ящик и через него будет отправляться почта.
    Пароль = "ddddddd";
    ТекстСообщения = "Тест из 1сссс";
   

    Почта = Новый COMОбъект("CDO.Configuration");
    СообщениеПочты = Новый COMОбъект("CDO.Message");
    СообщениеПочты.Configuration = Почта;
    СообщениеПочты.From= Строка("Служба автоматической рассылки """" <"+Оправитель+">");//СообщениеПочты.From= "Тест 1C"""" <xxxxxxx@yandex.ru>";
    СообщениеПочты.To  = "mail@mail.ru"; //СообщениеПочты.To  = "xxxxxxx@gmail.ru>";
    СообщениеПочты.Subject = ?(ТемаСообщения="","Автоматическая рассылка",ТемаСообщения);
   
    ТекстВHTML = "<html>
    |<head>
    |<meta content=""text/html; charset=Windows-1251"" http-equiv=""content-type"">
    |<title> Тестовое сообщение </title>
    |</head>
    |<body>
    |<h4>" + ТекстСообщения + "</h4>
    |<p></p>
    |</body>
    |</html>";
    //СообщениеПочты.BodyPart.Charset = "windows-1251"; // это если делать без извратов с оформлением текста письма
    СообщениеПочты.HTMLBody = ТекстВHTML;
   
    Если ТипЗнч(СписокВложений) = Тип("Строка") И Не СписокВложений = "" Тогда
        Попытка
            СообщениеПочты.AddAttachment(СписокВложений);
        Исключение
        КонецПопытки;
    ИначеЕсли ТипЗнч(СписокВложений) = Тип("СписокЗначений") Тогда
        Для каждого ПутьКВложению Из СписокВложений Цикл
            Попытка
                СообщениеПочты.AddAttachment(ПутьКВложению.Значение);
            Исключение
            КонецПопытки;
        КонецЦикла;
    КонецЕсли;
   
    Почта.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing").Value = 2;
    Почта.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value = "smtp.yandex.ru";
    Почта.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport").Value = "465";
    Почта.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").Value = 1;
    Почта.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername").Value = Оправитель;
    Почта.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword").Value = Пароль;
    Почта.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl").Value = 1;
    Почта.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout").Value = 60;
   
    Почта.Fields.Update();
    Попытка
        СообщениеПочты.Send();
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат Ложь;
    КонецПопытки;
   
КонецФункции