Имя: Пароль:
1C
1C 7.7
v7: Отправить письмо из 1С
,
0 2S
 
03.09.17
11:57
Привет из прошлого, называется.
С помощью чего сейчас кошерно отправлять письма из 1С 77?
Нужно автоматизировать отправку заявок поставщику.
Домен на яндексе (SSL?)
1 sdf
 
03.09.17
12:44
CDO
2 sdf
 
03.09.17
12:46

//CDO

        Попытка
            iConf = createObject("CDO.Configuration");
            iMsg  = createObject("CDO.Message");
        Исключение
            
            прРезультатОшибки.ДобавитьЗначение("Не удалось создать объекты <CDO> для работы с электронной почтой...!");
            
            глСообщить(прРезультатОшибки.ПолучитьЗначение(прРезультатОшибки.РазмерСписка()),"!");
            ЗаписьЖурналаРегистрации(прРезультатОшибки.ПолучитьЗначение(прРезультатОшибки.РазмерСписка()) ,"Робот","Робот",,5);

            лкВозврат = 0;
        КонецПопытки;
        
        cdoSendPassword              = "http://schemas.microsoft.com/cdo/configuration/sendpassword";;      
        cdoSendEmailAddress          = "http://schemas.microsoft.com/cdo/configuration/sendemailaddress";;  
        cdoAutoPromoteBodyParts      = "http://schemas.microsoft.com/cdo/configuration/autopromotebodyparts"; ;
        cdoFlushBuffersOnWrite       = "http://schemas.microsoft.com/cdo/configuration/flushbufferson;write"; ;
        cdoHTTPCookies               = "http://schemas.microsoft.com/cdo/configuration/httpcookies"; ;
        cdoLanguageCode              = "http://schemas.microsoft.com/cdo/configuration/languagecode"; ;
        cdoNNTPAccountName           = "http://schemas.microsoft.com/cdo/configuration/nntpaccountname"; ;
        cdoNNTPAuthenticate          = "http://schemas.microsoft.com/cdo/configuration/nntpauthenticate"; ;
        cdoNNTPConnectionTimeout     = "http://schemas.microsoft.com/cdo/configuration/nntpconnectiontimeout"; ;
        cdoNNTPServer                = "http://schemas.microsoft.com/cdo/configuration/nntpserver"; ;
        cdoNNTPServerPickupDirectory = "http://schemas.microsoft.com/cdo/configuration/nntpserverpickupdirectory"; ;
        cdoNNTPServerPort            = "http://schemas.microsoft.com/cdo/configuration/nntpserverport"; ;
        cdoNNTPUseSSL                = "http://schemas.microsoft.com/cdo/configuration/nntpusessl"; ;
        cdoPostEmailAddress          = "http://schemas.microsoft.com/cdo/configuration/postemailaddress"; ;
        cdoPostPassword              = "http://schemas.microsoft.com/cdo/configuration/postpassword"; ;
        cdoPostUserName              = "http://schemas.microsoft.com/cdo/configuration/postusername"; ;
        cdoPostUserReplyEmailAddress = "http://schemas.microsoft.com/cdo/configuration/postuserreplyemailaddress"; ;
        cdoPostUsingMethod           = "http://schemas.microsoft.com/cdo/configuration/postusing"; ;
        cdoSaveSentItems             = "http://schemas.microsoft.com/cdo/configuration/savesentitems"; ;
        cdoSendEmailAddress          = "http://schemas.microsoft.com/cdo/configuration/sendemailaddress"; ;
        cdoSendPassword              = "http://schemas.microsoft.com/cdo/configuration/sendpassword"; ;
        cdoSendUserName              = "http://schemas.microsoft.com/cdo/configuration/sendusername"; ;
        cdoSendUserReplyEmailAddress = "http://schemas.microsoft.com/cdo/configuration/senduserreplyemailaddress"; ;
        cdoSendUsingMethod           = "http://schemas.microsoft.com/cdo/configuration/sendusing"; ;
        cdoSMTPAccountName           = "http://schemas.microsoft.com/cdo/configuration/smtpaccountname"; ;
        cdoSMTPAuthenticate          = "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"; ;
        cdoSMTPConnectionTimeout     = "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"; ;
        cdoSMTPServer                = "http://schemas.microsoft.com/cdo/configuration/smtpserver";;
        cdoSMTPServerPickupDirectory = "http://schemas.microsoft.com/cdo/configuration/smtpserverpickupdirectory";;
        cdoSMTPServerPort            = "http://schemas.microsoft.com/cdo/configuration/smtpserverport";;
        cdoSMTPUseSSL                = "http://schemas.microsoft.com/cdo/configuration/smtpusessl";;
        cdoURLGetLatestVersion       = "http://schemas.microsoft.com/cdo/configuration/urlgetlatestversion";;
        cdoURLProxyBypass            = "http://schemas.microsoft.com/cdo/configuration/urlproxybypass";;
        cdoURLProxyServer            = "http://schemas.microsoft.com/cdo/configuration/urlproxyserver";;
        cdoUseMessageResponseText    = "http://schemas.microsoft.com/cdo/configuration/usemessageresponsetext";;
        
        
        iConf.fields(cdoSendUsingMethod).value = 2;
        //cdoSendUsingPickup    1  Send message using the local SMTP service pickup directory.
        //cdoSendUsingPort      2  Send the message using the network (SMTP protocol over the
        //                         network).  
        //cdoSendUsingExchange  3  Send the message using the Exchange mail submission URI.
        //                         This URI is found in the user's
        //                         urn:schemas:httpmail:sendmsg mailbox folder property.
        iConf.fields(cdoSMTPServer).value         = СокрЛП(прПисьмо.Получить("СерверОтправки"));
        iConf.fields(cdoSMTPServerPort).value     = СокрЛП(прПисьмо.Получить("ПортОтправки"));
        iConf.fields(cdoSendUserName).value       = СокрЛП(прПисьмо.Получить("Логин"));
        iConf.fields(CdoSendPassword).value       = СокрЛП(прПисьмо.Получить("Пароль"));
        iConf.fields(cdoSMTPAuthenticate).value   = прПисьмо.Получить("АутентификацияПриОтправке");
        
        iConf.fields(cdoSendEmailAddress).value   = лкАдресПолучателя;
        iConf.fields(cdoSMTPUseSSL).value         = прПисьмо.Получить("SSL");  //Secure Sockets Layer
    
        iConf.fields.update();            
        
        iMsg.configuration = iConf;
        
        iMsg.to         = лкАдресПолучателя;
          iMsg.from       = СокрЛП(прПисьмо.Получить("ИмяОтправителя")) +" <"+СокрЛП(прПисьмо.Получить("АдресОтправителя"))+">";
          
          iMsg.subject  = лкТема;
          iMsg.textBody = СокрЛП(прПисьмо.Получить("Тело"));
        iMsg.textBodypart.charset = "windows-1251"; //"iso-8859-5";
                                                    //либо "koi8-r"
                                                    
        Если ТипЗначенияСтр(прФайлы)="СписокЗначений" Тогда
            лкВложения="";
            Для к=1 по прФайлы.РазмерСписка() Цикл
                iMsg.addAttachment(прФайлы.ПолучитьЗначение(к));
            КонецЦикла;
        КонецЕсли;                                                    
        
        
        Состояние("Ждите...Идёт отправка...");
        
        лкКоличествоПовторов = прПисьмо.Получить("КоличествоПовторов");
        лкКоличествоПовторов = ?(ПустоеЗначение(лкКоличествоПовторов)=0,лкКоличествоПовторов,1);
        
        лкТаймаутПовторов = прПисьмо.Получить("ТаймаутПовторов");
        лкТаймаутПовторов = 1000*?(ПустоеЗначение(лкТаймаутПовторов)=0,лкТаймаутПовторов,1);
        
        лкУдачнаяОтправка = 0;
        
        Для Повтор=1 По лкКоличествоПовторов Цикл
        
            Попытка
                iMsg.send();
                лкУдачнаяОтправка = 1;
            Исключение    
                
                //ОписаниеОшибки здесь крякозябрами
            
            КонецПопытки;    
            //*****
            Если лкУдачнаяОтправка = 1 Тогда
                Прервать;
            Иначе
                глТаймаут(лкТаймаутПовторов);
            КонецЕсли;
            
        КонецЦикла;    
        
        
        Если лкУдачнаяОтправка=0 Тогда
            
            лкВозврат = 0;
            лкОписаниеОшибки = "не удалось отправить письмо: " +СокрЛП(лкАдресПолучателя);
            
            глСообщить("> Ошибка: "+лкОписаниеОшибки,"!");    
            ЗаписьЖурналаРегистрации("> Ошибка"+лкОписаниеОшибки ,"Робот","Робот",,5);
        
        КонецЕсли;
3 2S
 
03.09.17
12:52
(2) благодарю
4 kubik_live
 
03.09.17
14:44
(3) ВК DialMail
5 Злопчинский
 
03.09.17
14:53
готовая обработка для отправки писем
http://catalog.mista.ru/public/14131/
6 Смотрящий
 
03.09.17
15:39
(5) Она платная ;)
7 2S
 
03.09.17
16:04
(6) уже сам нарисовал :)
йокселем генерится pdf, CDO отправляем
8 vcv
 
03.09.17
17:59
(6) А время, потраченное ТС на свой велосипед, бесплатное :)
9 mishaPH
 
модератор
03.09.17
18:45
(0) dialmail  или rommail
10 2S
 
03.09.17
21:00
такс, столкнулся с проблемой вдруг
"Письмо не отправлено. Ошибка :CDO.Message.1: The transport failed to connect to the server."

вот сам код
    iConf.fields(cdoSendUsingMethod).value = 2;
    iConf.fields(cdoSMTPServer).value         = СокрЛП(глЗначениеПоУмолчанию("ЭлПочтаСерверОтправки"));
    iConf.fields(cdoSMTPServerPort).value     = глЗначениеПоУмолчанию("ЭлПочтаПортОтправки");
    iConf.fields(cdoSendUserName).value       = СокрЛП(глЗначениеПоУмолчанию("ЭлПочтаИмяПользователя"));
    iConf.fields(CdoSendPassword).value       = СокрЛП(глЗначениеПоУмолчанию("ЭлПочтаПароль"));
    iConf.fields(cdoSMTPAuthenticate).value   = 1;
    iConf.fields(cdoSendEmailAddress).value   = СокрЛП(ЭлПочтаПоставщика);
    iConf.fields(cdoSMTPUseSSL).value         = глЗначениеПоУмолчанию("ЭлПочтаИспользоватьSSL");  //Secure Sockets Layer
    iConf.fields(cdoSMTPConnectionTimeout).value  = глЗначениеПоУмолчанию("ЭлПочтаТаймаут");  
    iConf.fields.update();            

    iMsg.configuration = iConf;
    iMsg.to         = СокрЛП(ЭлПочтаПоставщика);
    iMsg.from       = СокрЛП(глЗначениеПоУмолчанию("ЭлПочтаАдрес"));
    iMsg.subject  = СокрЛП(ТемаПисьма);
    iMsg.textBody = СокрЛП(ТекстПисьма);
    iMsg.textBodypart.charset = "windows-1251"; //"iso-8859-5";
                                                //либо "koi8-r"

    Если ФС.СуществуетФайл(ВыбФайл + ".pdf") = 1 Тогда
        iMsg.addAttachment(ВыбФайл + ".pdf");
    Иначе
        Сообщить("Не найден файл заявки. Письмо будет отправлено без вложения.");
    КонецЕсли;

    Попытка
        iMsg.Send();
        Сообщить("Письмо успешно отправлено.");
    Исключение
        Сообщить("Письмо не отправлено. Ошибка :" + ОписаниеОшибки(),"!");
    КонецПопытки;




порт 465, SSL = 1, сервер отправки smtp.yandex.ru
логин пробовал как с @, так и до @
11 2S
 
03.09.17
21:10
W2R3 SP2
12 2S
 
03.09.17
21:10
ошибочка
W2K3 SP2
13 mishaPH
 
модератор
03.09.17
21:53
Хватит фигней страдать. 20-30 минут на разбор с диалмейлом и все отправишь
14 ЕщеОдин Программист
 
04.09.17
10:00
1. для работы с почтой используется ROM-Mail,
в примерах в инете иногда не указывают, что там нужно
установить свойство АдресОтправителя - некоторые майл-сервера его хотят.
2. Устанавливается stunnel для работы с SSL - ROM-mail шлет на этот локальный сервис, а этот сервис отсылает на сервер почты.
3. Если нужен pdf, то BioPDF. Инсталится как принтер и отправляется туда, а он автоматом генерит файл в нужную папку, только с настройками пять минут поколдовать.
15 Serginio1
 
04.09.17
10:52
16 Serginio1
 
04.09.17
11:35
17 varelchik
 
05.09.17
10:55
(11)(12) разрядность винды?
случаем не x64?