|
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 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |