Имя: Пароль:
1C
1C 7.7
v7: Отправка почты CDO
,
0 MiracMC
 
16.02.16
01:57
Приветствую.

Видел похожие темы тут, но так и не нашел ответа на вопрос.

У меня уже года 4 как у клиентов работает отправка почты из 1С на CDO.Message.
Выглядит примерно так:

Обработка ОтправитьПисьмо()
Попытка
    iConf = createObject("CDO.Configuration");
    iMsg  = createObject("CDO.Message");
Исключение
    Сообщить("Не удалось создать объекты <CDO> для работы с электронной почтой...!");
    СтатусВозврата (0);
КонецПопытки;  
    Состояние("Отправка E-Mail...");
    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;
//=========================      
iConf.fields(cdoSMTPServer).value         = сервер;
iConf.fields(cdoSMTPServerPort).valu     = 465;
iConf.fields(cdoSendUserName).value       = "логин";
iConf.fields(CdoSendPassword).value      = "пароль";
iConf.fields(cdoSMTPAuthenticate).value   = 1;
iConf.fields(cdoSMTPConnectionTimeout).value   = 30;
iConf.fields(cdoSendEmailAddress).value   = СокрЛП(Кому);
iConf.fields(cdoSMTPUseSSL).value         = 1;
iConf.fields.update();            
iMsg.configuration = iConf;
iMsg.from       = СокрЛП(ОтКого);
iMsg.to         = СокрЛП(Кому);
iMsg.subject  = СокрЛП(Тема);              
iMsg.textBody = СокрЛП(Те);
iMsg.textBodypart.charset = "windows-1251";
iMsg.send();

И все было хорошо буквально до 11.02.2016. Внезапно перестало работать.
При чем как то странно. Только у клиентов, у которых 1С вертится на серверах Win2003...

При этом беру из внешнюю обработку, копирую к себе на Win2008 - работает...

В чем причина?

Дополнительная инфа:
1. Клиенты вертсяться на одном и том же физическом сервере в разных виртуальных машинах
2. Мировой ИП у них один и тот же
3. Версии ОС так же одинаковые (Windows 2003 EE SP2 x32)
4. Моя виртуальная машина с Windows 2008 R2 Enterprise x64) так же на этой же физике...
5. проверялось на разных почтовых аккаутнах (ukr.net , gmail.com, персональные домены) как с авторизацией по SSL, так и по 25-му порту.... (все настройки при этом прописывались)...

Эффект одинаковый. на 2008 работает а на 2003 нет...

Хелп плз)
1 MiracMC
 
16.02.16
02:00
а.. собственно ошибка то вот такая:

cdo.message.1 the transport failed to connect to the server
2 BalBess
 
16.02.16
10:58
нужно чтобы был доступен сайт microsoft.com на той виртуальной машине на которой пытаетесь отправить
3 BalBess
 
16.02.16
11:01
раз уж понаделали кучу ссылок на их сайт )))
откройте эксплорер (ни в коем случае другой браузер!) и сразу на любимый сайт билла
если не открывается, значит не судьба ((
4 vip03
 
16.02.16
11:12
а чем диалмейл не нравится?
5 HawkEye
 
16.02.16
11:31
(0) если работало и перестало работать, значит накатили какое-то обновление, вспоминай что делали с ОС-ью на тех виртуалках где не работает CDO
6 MiracMC
 
16.02.16
12:04
(2) (3)
дело все в том, что эти ссылки "не откликаются" по своей природе. поверил и на Win2008 и на Win2003
А доступ именно на microsoft.com есть конечно же.

(4)
когда эта обработка создавалась DialMail не существовало(

(5) в том то ж и дело, что ничего не устанавливалось\удалялось как на виртаулках, так и на физике(

но, блин, на win2008 работает же....
7 Смотрящий
 
16.02.16
12:10
http://forums.iis.net/t/1146380.aspx?using+CDO+Message+
по собачьи правда, но может полезно будет
8 MiracMC
 
16.02.16
12:44
(7) читал... они там про локальный SMTP торгуются...
9 BalBess
 
16.02.16
12:47
в коде еще ошибка есть iConf.fields(cdoSMTPServerPort).valu     = 465;
но это мож ошибка копирования
10 BalBess
 
16.02.16
12:49
откуда обработка берет логины/пароли
мож разные на разных виртуалках
11 Масянька
 
16.02.16
12:51
(8) У меня так работает:

    Письмо = СоздатьОбъект("CDO.Message");
    
    Письмо.To    = Адрес;
    Письмо.From    = Отправитель;
    Письмо.Subject     = Тема;
    Письмо.TextBody = Текст;
    Письмо.TextBodyPart.Charset = "iso-8859-5";

    Письмо.AddAttachment(КаталогДляЗаписи);
    Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing").Value                 = 2;
    Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value             = SMTPСервер;
    Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").Value         = 1;
    Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername").Value             = Отправитель;
    Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword").Value             = "...";
    Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport").Value         = SMTPПорт;
    Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout").Value    = 60;
    Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendmailaddress").Value         = Адрес;
    Письмо.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl").Value             = -1;
    Письмо.Configuration.Fields.Update();
    
    Попытка
        Письмо.Send();
        Форма.Отправка.Заголовок("");
        Форма.Параметр.Установить("Отправка",     1);
        Предупреждение("Успешно отправлено на электронный адрес: " + Адрес);
    Исключение
        Форма.Отправка.Заголовок("");
        Форма.Параметр.Установить("Отправка",     0);
        Предупреждение("Не удалось отправить по причине: " + РазделительСтрок + ОписаниеОшибки());
        Возврат 1;
    КонецПопытки;

    SMTPСервер        = "smtp.gmail.com";
    SMTPПорт        = "465";
    Отправитель     = "...";
12 MiracMC
 
16.02.16
13:13
(9) ошибка копирования
(10) там параметры во внешних файлах хранятся. если идет ошибка отправки - все параметры выходят на экран. проверял.. параметры авторизации в норме...

(11) не понял, почему smtpusessl = -1
должно же быть = 1 вроде....
13 Масянька
 
16.02.16
13:18
(12) Честно? Не знаю.
У меня вообще не получилось с корпоративной почты отправлять... Долбилась долго. Пока не выяснилось, что нужно провайдеру чего-то там менять. Поэтому ящик делали на gmail.
14 HawkEye
 
16.02.16
13:22
(12) smtpusess - булев тип...
для оле TRUE и FALSE имеют соответственно значения: -1 (минус единица) и 0.
для CDO скорее всего так-же, проверять лень.
15 MiracMC
 
16.02.16
13:52
так... экспериментальным путем установлено, что не работает только на серверах, где надо SSL (порт 465)... на стандартном методе (порт 25) работает....
16 MiracMC
 
16.02.16
13:55
упростил обработку до нимагу...

//*******************************************
Процедура Сформировать()
    КаталогОбработки = "D:\SendMail1C\";
    Если ЗагрузитьВнешнююКомпоненту (СокрЛп(КаталогОбработки)+"SpreadSheet.dll") = 0 Тогда
        Предупреждение("Не удалось обнаружить компоненту SpreadSheet.dll! В "+СокрЛп(КаталогИБ())+"
        |Без неё работа с базой не возможна...",50);  
        Возврат;
    КонецЕсли;
    Попытка
        iConf = createObject("CDO.Configuration");
        iMsg  = createObject("CDO.Message");
    Исключение
        Сообщить("Не удалось создать объекты <CDO> для работы с электронной почтой...!");
        СтатусВозврата (0);
    КонецПопытки;  
    Состояние("Отправка E-Mail...");
    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;
    
    iConf.fields(cdoSMTPServer).value                 = "smtp.домен";
    iConf.fields(cdoSMTPServerPort).value             = 25;
    iConf.fields(cdoSendUserName).value               = СокрЛП(Кому);
    iConf.fields(CdoSendPassword).value               = "пароль";
    iConf.fields(cdoSMTPAuthenticate).value           = 1;
    iConf.fields(cdoSMTPConnectionTimeout).value    = 30;
    
    iConf.fields(cdoSendEmailAddress).value   = СокрЛП(Кому);
    iConf.fields(cdoSMTPUseSSL).value         = 0;  //Secure Sockets Layer
    iConf.fields.update();            
    iMsg.configuration = iConf;
    iMsg.from       = СокрЛП(Кому);
    iMsg.to         = СокрЛП(Кому);
    iMsg.subject  = "TEST CDO";              
    iMsg.textBody = "Тестовое сообщение!";
    iMsg.textBodypart.charset = "windows-1251"; //"iso-8859-5";     //либо "koi8-r"
    
    Попытка iMsg.send();
        Сообщить ("Тестовое письмо для " + СимволТабуляции + СокрЛП(Кому) + СимволТабуляции + " отправлено успешно в " + ТекущееВремя());    
    Исключение                    
        Сообщить(iMsg.from);
        Сообщить(iConf.fields(cdoSMTPUseSSL).value);
        Сообщить(iConf.fields(cdoSMTPServer).value);
        Сообщить(iConf.fields(cdoSMTPServerPort).value);
        Сообщить(iConf.fields(cdoSendUserName).value);
        Сообщить(iConf.fields(CdoSendPassword).value);
        Сообщить(iConf.fields(cdoSMTPAuthenticate).value);
        Сообщить("> Ошибка: "+ОписаниеОшибки(),"!");    
    КонецПопытки;    
КонецПроцедуры


так работает.. проверьте, кто нибудь, у себя с SSL....
17 HawkEye
 
16.02.16
13:56
(15) так может у тебя админы порт закрыли?
18 MiracMC
 
16.02.16
14:12
(17) да ну...
да и telnet smtp.gmail.com 465 срабатывает нормально....
19 Злопчинский
 
16.02.16
17:37
сервер 2003, работает все нормально и по 25 и через SSL
20 MiracMC
 
17.02.16
12:49
(19)
странно.. я уже на разных серверах пробовал... не работает и все с SSL