Меню

Ошибка cdo транспорту не удалось подключиться к серверу

I’m working on a Classic ASP & Vbscript site that uses CDO.Message to send email in a function. I’m running into trouble with this function and am recieving the error,

CDO.Message.1 error '80040213'

The transport failed to connect to the server.

I believe it has to do with the SMTP authentication settings and the shared host we are running on. I am looking for help debugging the issue further.

Here is the main code snippet from the function,

Set objConfig = Server.CreateObject("CDO.Configuration")
Set Fields = objConfig.Fields

' Set config fields we care about
With Fields
 .Item(cdoSendUsingMethod)       = cdoSendUsingPort
 .Item(cdoSMTPServer)            = "mail.<website>.com"

 '.Item(cdoSMTPServerPort)        = 25
 '.Item(cdoSMTPConnectionTimeout) = 10
 '.Item(cdoSMTPAuthenticate)      = cdoBasic
 '.Item(cdoSendUserName)          = "support"
 '.Item(cdoSendPassword)          = "password"

 .Update
End With

Set objMessage = Server.CreateObject("CDO.Message")

Set objMessage.Configuration = objConfig

With objMessage
 .To       = lEmailTo                   '"Display Name <email_address>"
 .From     = lEmailFrom                 '"Display Name <email_address>"
 .Subject  = lSubject
 .TextBody = lMessage
 .Send
End With

At first I believed it might have been with the commented lines 9-13 in the above snippet, but it appears that a previous developer commented them on purpose and that the email function was still working at some point in time. Uncommenting those lines still doesn’t solve the error.

Can anyone see anything I might be missing? Does anyone know what the defaults for CDO.Configuration are and what SMTP settings this code is trying to use with our shared host? Should I first call our hosting & clarify with them?

I’m working on a Classic ASP & Vbscript site that uses CDO.Message to send email in a function. I’m running into trouble with this function and am recieving the error,

CDO.Message.1 error '80040213'

The transport failed to connect to the server.

I believe it has to do with the SMTP authentication settings and the shared host we are running on. I am looking for help debugging the issue further.

Here is the main code snippet from the function,

Set objConfig = Server.CreateObject("CDO.Configuration")
Set Fields = objConfig.Fields

' Set config fields we care about
With Fields
 .Item(cdoSendUsingMethod)       = cdoSendUsingPort
 .Item(cdoSMTPServer)            = "mail.<website>.com"

 '.Item(cdoSMTPServerPort)        = 25
 '.Item(cdoSMTPConnectionTimeout) = 10
 '.Item(cdoSMTPAuthenticate)      = cdoBasic
 '.Item(cdoSendUserName)          = "support"
 '.Item(cdoSendPassword)          = "password"

 .Update
End With

Set objMessage = Server.CreateObject("CDO.Message")

Set objMessage.Configuration = objConfig

With objMessage
 .To       = lEmailTo                   '"Display Name <email_address>"
 .From     = lEmailFrom                 '"Display Name <email_address>"
 .Subject  = lSubject
 .TextBody = lMessage
 .Send
End With

At first I believed it might have been with the commented lines 9-13 in the above snippet, but it appears that a previous developer commented them on purpose and that the email function was still working at some point in time. Uncommenting those lines still doesn’t solve the error.

Can anyone see anything I might be missing? Does anyone know what the defaults for CDO.Configuration are and what SMTP settings this code is trying to use with our shared host? Should I first call our hosting & clarify with them?

Я
   Нуф-Нуф

10.09.09 — 14:41

простая обработка отправки письма.        

   ЦДО = CreateObject(«CDO.Message»);

           ЦДО.from = СокрЛП(«kreppost@yandex.ru»);

           ЦДО.To = СокрЛП(«post@websms.ru»);

           ЦДО.Subject = СокрЛП(«tema»);              

           ЦДО.Textbody = ТекстПисьма;

           ЦДО.BodyPart.Charset=»koi8-r»;

           ЦДО.Configuration.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/sendusing»).Value=2;

           ЦДО.Configuration.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/smtpserver»).Value=»smtp.yandex.ru»;

           ЦДО.Configuration.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/smtpserverport»).Value=25;

           ЦДО.Configuration.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/smtpauthenticate»).Value=1;

           ЦДО.Configuration.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/sendusing»).Value=2;

           ЦДО.Configuration.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/sendusername»).Value=»kreppost»;

           ЦДО.Configuration.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/sendpassword»).Value=»******»;

           ЦДО.Configuration.Fields.Item(«urn:schemas:mailheader:content-language»).Value = «koi8-r»;

           ЦДО.Configuration.Fields.Update();

           ЦДО.Send();    

неделю назад работала, а сейчас выдает:

ЦДО.Send();    

{Обработка.ОтправкаСМС.Форма.Модуль(18)}: CDO.Message.1: Транспорту не удалось подключиться к серверу.

   DrZombi

1 — 10.09.09 — 14:43

(0)Покажи библиотеку «CreateObject(«CDO.Message»);»
Оченно любопытно 🙂

Вообще шо за зверь?

   DrZombi

2 — 10.09.09 — 14:44

(0)Почту отправлять с помощью Ром-майла не пробовал?

   Dies

3 — 10.09.09 — 14:44

Стандартная виндовая библиотека для работы с почтой

   Dies

4 — 10.09.09 — 14:46

(0) Может яндекс поменял варианты авторизации?

   DrZombi

5 — 10.09.09 — 14:48

(3)Ужас это 🙂 Виндовый…

   Нуф-Нуф

6 — 10.09.09 — 14:49

(2)  от рома и отказался. у клиента глючила эта библиотека.

smaharbA порекомендовал сабж и все взтелело.

а сегодня на моем компе чет не стало отправлятся.

(4) ща попробую поменять флаг на

ЦДО.Configuration.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/smtpauthenticate»).Value=0;

   Нуф-Нуф

7 — 10.09.09 — 14:55

вариант в (6) не прокатил

   Нуф-Нуф

8 — 10.09.09 — 15:00

ап

   Нуф-Нуф

9 — 10.09.09 — 15:04

поможите…

   Dies

10 — 10.09.09 — 15:09

у меня так работает

   конф=»http://schemas.microsoft.com/cdo/configuration/»;

   iConf=СоздатьОбъект(«CDO.Configuration»);

   iConf.fields(конф+»sendusing»       ).value=2;

   iConf.fields(конф+»smtpserver»      ).value=СокрЛП(ВыбSMTPСервер); //SMTP сервер

   iConf.fields(конф+»smtpserverport»  ).value=ВыбSMTPПорт; //SMTP порт

   iConf.fields(конф+»smtpauthenticate»).value=1; //авторизация

   iConf.fields(конф+»sendusername»    ).value=СокрЛП(ВыбИмяУчЗаписи); //имя пользователя

   iConf.fields(конф+»sendpassword»    ).value=СокрЛП(ВыбПароль); //пароль

   iConf.fields(конф+»sendemailaddress»).value=СокрЛП(ВыбИмяУчЗаписи)+»@slavutich.com»;

   iConf.fields(конф+»smtpusessl»      ).value=0; //Secure Sockets Layer

   iConf.fields.update();

   iMsg=СоздатьОбъект(«CDO.Message»);

   iMsg.configuration=iConf;

   iMsg.to=СокрЛП(ВыбМылоПолучателя);

   //CrmExc_12005@slavutich.com deimos-sf@mail.ru

   iMsg.subject=СокрЛП(КодОбмена)+»;»+ДатаГод(ДатаВыгрузки)+»-«+ДатаМесяц(ДатаВыгрузки)+»-«+ДатаЧисло(ДатаВыгрузки)+»;»+»10″+»;»+»Visagrup»;

   iMsg.MIMEFormatted=»false»;

   iMsg.addAttachment(Аттач);

   iMsg.send();

   Dies

11 — 10.09.09 — 15:12

(0) Посмотри в факе по почте яндекса — может требуют авторизацию

  

Нуф-Нуф

12 — 10.09.09 — 15:13

(11) пробовал   iConf.fields(конф+»smtpauthenticate»).value=1; //авторизация

value=0

value=1

value=2

никак

Здесь можно задать вопрос «Как сделать?» и получить кучу ответов, что тебе это делать не надо. Ymryn

ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.

Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.

6743 просмотра

1 ответ

0 Репутация автора

У меня есть код ниже для отправки почты из макроса VBA с использованием CDO. Я получаю ошибку в коде:

Транспорт не удалось подключиться к серверу Ошибка

Я отправляю почту из службы Gmail SMTP. Похоже, что конфигурация настроена правильно, но почему-то она не работает.

Ответы (1)

1 плюс

11825 Репутация автора

Этот код прекрасно работает для меня (отправка из Gmail в Gmail), поэтому вам необходимо проверить следующее:

  • попробуйте это с портом 587, а также с портом 465 ( дальнейшее чтение )
  • настроить отправляющий аккаунт в Gmail для Access for less secure apps — есть Turn On опция на следующей странице поддержки

Предоставление менее безопасным приложениям доступа к вашей учетной записи Google может блокировать попытки входа в некоторые приложения или устройства, которые не используют современные стандарты безопасности. Поскольку эти приложения и устройства легче взломать, их блокировка помогает обеспечить безопасность вашей учетной записи.

Вот некоторые примеры приложений, которые не поддерживают новейшие стандарты безопасности:

Приложение Почта на вашем iPhone или iPad с iOS 6 или ниже

Почтовое приложение на вашем телефоне Windows Phone, предшествующее версии 8.1

Некоторые настольные почтовые клиенты, такие как Microsoft Outlook и Mozilla Thunderbird

Вариант 2. Измените настройки, чтобы менее защищенные приложения могли получить доступ к вашей учетной записи. Мы не рекомендуем эту опцию, потому что это может помочь кому-то взломать ваш аккаунт. Если вы хотите разрешить доступ в любом случае, выполните следующие действия:

Перейдите в раздел «Менее безопасные приложения» в Моем аккаунте.

Рядом с «Доступ к менее защищенным приложениям» выберите Включить. (Примечание для пользователей Google Apps: этот параметр скрыт, если ваш администратор заблокировал менее безопасный доступ к учетной записи приложения.)

CDO сейчас довольно старый, поэтому предположим, что это пример приложения, которое не поддерживает последние стандарты безопасности .

Я знаю, что к этому относится несколько потоков, но никто из них не ответил на мой вопрос.

Только код (VBScript):

С этим кодом все работает отлично с моим компьютером. Но на других ПК эта ошибка появляется:

CDO.MESSAGE.1 Транспорт не удалось подключиться к серверу.

  1. Проверка через telnet порт 25, 465, 587. Только 465 не работали.
  2. Изменение порта на 465, 25, 587.
  3. исключить мой.exe (эта программа) в AntiVirus.

У меня есть эти smtpusessl, authetate и т.д.

Я понятия не имею, что делать и проверять. Возможно ли, что система блокирует эту активность?

Я нашел причину этой проблемы, кажется, что это делает ISP. Я попытался в более чем 2 ISP в более чем 3 компьютерах, скажем, A, B, C. A и B отлично работают с тем же кодом, но каждый компьютер с ошибкой поставщика C. используя порт 587 или 465, оба работают нормально. Я действительно не понимаю об этом порту, но оба работают нормально.

теперь я столкнулся с другой ошибкой, которую я опубликую в другой. Теперь нет ошибки, но она не отправила почту.

Пользователи Gmail могут получить доступ к своей учетной записи на официальном веб-сайте или использовать сторонние или сторонние приложения и службы. Первое приложение-участник — это, например, официальное приложение Gmail Google для Android, а Thunderbird и почтовое клиентское приложение Windows 8 — сторонние приложения.

Google объявила в апреле 2014 года, что она улучшит безопасность своих служб и будет влиять на любое приложение, отправляющее имена пользователей и пароли в компанию.

Компания предложила переключиться на OAuth 2.0, но не применяла ее до сих пор.

Если вы открываете новую страницу менее безопасных приложений под параметрами безопасности в Google, вы заметите, что по умолчанию отключил доступ Google.

Примечание. Вы видите страницу только в том случае, если вы не используете Google Apps или активировали двухфакторную аутентификацию для учетной записи.

Вы можете перевернуть переключатель здесь, чтобы снова включить менее безопасные приложения, чтобы восстановить доступ.

У меня есть следующий код для отправки почты с макроса VBA с помощью CDO. Я получаю сообщение об ошибке в коде:

Транспорт не удалось подключиться к серверу Ошибка

Я посылаю почту от службы Gmail SMTP. Похоже, что настройка настроена правильно, но почему-то это не работает.

Создан 04 янв. 17 2017-01-04 12:33:31 Harshil

1 ответ

Этот код работает совершенно нормально для меня (отправить из Gmail в Gmail) — так что вам необходимо проверить следующее:

  • попробовать его с портом 587, а также порт 465 (further reading)
  • настроить отправку учетной записи в Gmail для Access for less secure apps — есть Turn On вариант на следующей support page

Предоставление менее защищенных приложений для доступа к вашей учетной записи Google может блокировать попытки входа в систему из некоторых приложений или устройств, которые не используют современные стандарты безопасности. Поскольку эти приложения и устройства легче ворваться, их блокировка помогает защитить вашу учетную запись.

Некоторые примеры приложений, которые не поддерживают новейшие стандарты безопасности включают в себя:

Почтового приложение на вашем iPhone или IPad с прошивкой 6 или ниже

The Mail приложение на телефоне Windows, предшествующей версии 8.1

Некоторые Desktop почтовые клиенты, такие как Microsoft Outlook и Mozilla Thunderbird

Вариант 2. Измените свои настройки, чтобы менее безопасные приложения могли получить доступ к вашей учетной записи. Мы не рекомендуем этот вариант, потому что это может облегчить кому-то проникновение в вашу учетную запись. Если вы хотите разрешить доступ в любом случае, выполните следующие действия:

Перейдите в раздел «Менее безопасные приложения» в разделе «Моя учетная запись».

Рядом с «Доступ для менее безопасных приложений» выберите Включить. (Примечание для пользователей Служб Google: Эта настройка скрыта, если администратор заблокировал менее безопасный доступ приложение учетной записи.)

CDO довольно стара так предположить, что это пример приложения, которое не поддерживает последние стандарты безопасности.

Создан 04 янв. 17 2017-01-04 13:37:16 Robin Mackenzie

Sergey112233

0 / 0 / 0

Регистрация: 14.12.2010

Сообщений: 32

1

27.07.2011, 20:52. Показов 7122. Ответов 6

Метки нет (Все метки)


Уважаемые форумчане.
Для автоматизации отправки писем из Excel использовал CDO.

Включил ссылку Microsoft CDO for Windows 2000 Library
Полагаю, что в ее составе есть библиотека
Microsoft CDO for Exchange 2000 Library(?)
За основу взял такой код:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Sub mail()
Dim oMyMail As New CDO.Message
oMyMail.To = "Administrator@nwtraders.msft"
oMyMail.From = "Administrator@nwtraders.msft"
oMyMail.Subject = "Hello from CDO"
oMyMail.TextBody = "Our letter"
oMyMail.AddAttachment "C:1.txt"
oMyMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
omyMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserver") = _
"smtp.YourServer.com"
oMyMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
oMyMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendusername") = _
"YourLogin@YourDomain.com"
oMyMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/sendpassword") = _
"Password"
oMyMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
oMyMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = False
oMyMail.Configuration.Fields.Item _
("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
oMyMail.Configuration.Fields.Update
oMyMail.Send
End Sub

При отправке письма по внутренней почте Exchange Server появляется окно с ошибкой «Транспорту не удалось подключиться к серверу».
Подскажите, пожалуйста.Что означает это предупреждение, и какие могут быть варианты решения?
Автоматизированная отправка писем с помощью Outlook не подходит в связи с известным ограничением процедуры самого приложения.
Если есть у кого-нибудь эл. версия книги Сью Мошер Программирование Microsoft Outlook, поделитесь, пожалуйста

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



437 / 144 / 9

Регистрация: 12.01.2009

Сообщений: 678

Записей в блоге: 1

27.07.2011, 21:21

2

Цитата
Сообщение от Sergey112233
Посмотреть сообщение

Автоматизированная отправка писем с помощью Outlook не подходит в связи с известным ограничением процедуры самого приложения.

А можно по подробнее?



0



0 / 0 / 0

Регистрация: 14.12.2010

Сообщений: 32

27.07.2011, 21:31

 [ТС]

3

Это предупреждение уже не автоматизация

Миниатюры

Отправка почты с помощью CDO
 



0



Sergey112233

0 / 0 / 0

Регистрация: 14.12.2010

Сообщений: 32

27.07.2011, 21:34

 [ТС]

4

Такой вариант через yandex.ru работает. А на внутренней почте появляется ошибка «Нет доступа к Интернет». Но там интернет и не нужен.
Кто знает, как поступить в этом случае?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Sub Send_Mail()
Const CDO_Cnf = "http://schemas.microsoft.com/cdo/configuration/"
Dim oCDOCnf As Object, oCDOMsg As Object
Dim SMTPserver As String, sUsername As String, sPass As String, sMsg As String
Dim sTo As String, sFrom As String, sSubject As String, sBody As String, sAttachment As String
On Error Resume Next
'sFrom - как правило совпадает с sUsername
SMTPserver = [B10] ' SMTPServer: для Mail.ru "smtp.mail.ru"; для Яндекса "smtp.yandex.ru"; для Рамблера "mail.rambler.ru"
sUsername = [B11] ' Учетная запись на сервере
sPass = [B12] ' Пароль к почтовому аккаунту
 
If Len(SMTPserver) = 0 Then MsgBox "Не указан SMTP сервер", vbInformation, "www.Excel-VBA.ru": Exit Sub
If Len(sUsername) = 0 Then MsgBox "Не указана учетная запись", vbInformation, "www.Excel-VBA.ru": Exit Sub
If Len(sPass) = 0 Then MsgBox "Не указан пароль", vbInformation, "www.Excel-VBA.ru": Exit Sub
 
sTo = [B2] 'Кому
sFrom = [B3] 'От кого
sSubject = [B4] 'Тема письма
sBody = [B5] 'Текст письма
'sAttachment = [B6] 'Вложение(полный путь к файлу)
sAttachment = Cells(6, "B").Value
'Проверка наличия файла по указанному пути
If Dir(sAttachment, vbDirectory) = "" Then sAttachment = ""
'Назначаем конфигурацию CDO
Set oCDOCnf = CreateObject("CDO.Configuration")
With oCDOCnf.Fields
.Item(CDO_Cnf & "sendusing") = 2
.Item(CDO_Cnf & "smtpauthenticate") = 1
.Item(CDO_Cnf & "smtpserver") = SMTPserver
.Item(CDO_Cnf & "sendusername") = sUsername
.Item(CDO_Cnf & "sendpassword") = sPass
.Update
End With
'Создаем сообщение
Set oCDOMsg = CreateObject("CDO.Message")
With oCDOMsg
Set .Configuration = oCDOCnf
.BodyPart.Charset = "koi8-r"
.From = sFrom
.To = sTo
.Subject = sSubject
.TextBody = sBody
'.AddAttachment = sAttachment
If Len(sAttachment) > 0 Then .AddAttachment sAttachment
 
.Send
End With
 
Select Case Err.Number
Case -2147220973: sMsg = "Нет доступа к Интернет"
Case -2147220975: sMsg = "Отказ сервера SMTP"
Case 0: sMsg = "Письмо отправлено"
End Select
MsgBox sMsg, vbInformation, "Проверка доступа в Интернет"
Set oCDOMsg = Nothing: Set oCDOCnf = Nothing
End Sub



0



Sergey112233

0 / 0 / 0

Регистрация: 14.12.2010

Сообщений: 32

27.07.2011, 22:11

 [ТС]

6

Это в проекте Outlook:

Visual Basic
1
2
3
Sub Mail()
   Call ammolSendMail("youraddress@mail.ru", "youraddress@mail.ru", "youraddress@mail.ru", "youraddress@mail.ru", "youraddress@mail.ru", "youraddress@mail.ru")    
End Sub

А я отправляю письма из Excel. Как сделать так, чтобы VBA Excel увидел Function ammolSendMail, расположенную в VBA Outlook ?



0



437 / 144 / 9

Регистрация: 12.01.2009

Сообщений: 678

Записей в блоге: 1

28.07.2011, 11:29

7



0



Перейти к содержимому раздела

Форумы TDMS

Technical Data Management System

Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.

Дерево сообщений Активные темы Темы без ответов

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

#1 15 сентября 2014г. 14:43:36 (изменено: A77x7, 15 сентября 2014г. 14:46:25)

  • A77x7
  • Участник
  • На форуме с 14 марта 2014г.
  • Сообщений: 79
  • Спасибо: 0

Тема: Отправка сообщений через внешнюю почту (CDO)

Код:

public sub send_notification(to_address, body, subject, from_address)
  'if from_address = empty then 
  if from_address = "" then from_address = ThisApplication.CurrentUser.Mail
  if from_address = "" then from_address = "xxx@yyy.ru"
  if subject = empty then subject = "Уведомление системы электронного документооборота (TDMS)"
  
  Set objConf = CreateObject("CDO.Configuration")
  Set objEmail = CreateObject("CDO.Message")
  Set objFlds = objConf.Fields
  
  With objFlds
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 'cdoSendUsingPort это порт
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "10.20.111.222" ' Имя SMTP сервера
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 2
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
    .Update
  End With
  
  Set objEmail.Configuration = objConf
  objEmail.From = from_address
  objEmail.To = to_address
  objEmail.Subject = subject
  'objEmail.Textbody = body
  objEmail.HTMLBody = body
  objEmail.DSNOptions = 14  'Success, failure or delay (cdoDSNSuccessFailOrDelay)
  objEmail.Fields.Update
  objEmail.Send
end sub

Код взят с этого форума и работает на всех машинах… кроме одной (пока одной).
На этой машине на последней строке (objEmail.Send) получаем ошибку «транспорту не удалось подключиться к серверу», письмо не уходит.
ТДМС и Офис переставляли.
Кроме того, на этой же машине замечена ещё одна странность — не открываются ссылки tdms://…
Точнее они до ТДМС доходят, но в обработчике OnDDE Command == «is_tray_allow» вместо «locate» или «edit», и object == nothing. Даже если ссылка tdms://locate/{…}
Никто не сталкивался? В чём может быть дело?
P.S. Win7x64, Office2010x64, TDMS 4.0.235.1
P.P.S. Переписал этот код на C# (в виде самостоятельного exe) — тоже самое, т.е. ТДМС-то как бы ни причём, хотя опять же is_tray_allow — это чьё?

#2 Ответ от McZag 16 сентября 2014г. 11:33:45

  • McZag
  • McZag
  • Джедай
  • Откуда: Москва
  • На форуме с 16 марта 2007г.
  • Сообщений: 670
  • Спасибо: 13

Re: Отправка сообщений через внешнюю почту (CDO)

A77x7 пишет:

…работает на всех машинах… кроме одной (пока одной).
На этой машине на последней строке (objEmail.Send) получаем ошибку «транспорту не удалось подключиться к серверу», письмо не уходит.
ТДМС и Офис переставляли.
Кроме того, на этой же машине замечена ещё одна странность — не открываются ссылки tdms://…
Точнее они до ТДМС доходят, но в обработчике OnDDE Command == «is_tray_allow» вместо «locate» или «edit», и object == nothing. Даже если ссылка tdms://locate/{…}
Никто не сталкивался? В чём может быть дело?
P.S. Win7x64, Office2010x64, TDMS 4.0.235.1
P.P.S. Переписал этот код на C# (в виде самостоятельного exe) — тоже самое, т.е. ТДМС-то как бы ни причём, хотя опять же is_tray_allow — это чьё?

Я бы подумал, что проблема с правами/реестром. Попробуйте запустить TDMS под учеткой локального администратора и выполнить все команды, которые у вас не работают. Какой результат? Если «вдруг» все заработало, попробуйте повторить те действия под обычным пользователем

#3 Ответ от A77x7 16 сентября 2014г. 12:27:14

  • A77x7
  • Участник
  • На форуме с 14 марта 2014г.
  • Сообщений: 79
  • Спасибо: 0

Re: Отправка сообщений через внешнюю почту (CDO)

McZag пишет:

Я бы подумал, что проблема с правами/реестром. Попробуйте запустить TDMS под учеткой локального администратора и выполнить все команды, которые у вас не работают. Какой результат? Если «вдруг» все заработало, попробуйте повторить те действия под обычным пользователем

Результат тот же. Никакой разницы. Ну и вообще этот пользователь итак локальный админ.

#4 Ответ от McZag 16 сентября 2014г. 14:34:00 (изменено: McZag, 16 сентября 2014г. 14:34:59)

  • McZag
  • McZag
  • Джедай
  • Откуда: Москва
  • На форуме с 16 марта 2007г.
  • Сообщений: 670
  • Спасибо: 13

Re: Отправка сообщений через внешнюю почту (CDO)

A77x7 пишет:

Результат тот же. Никакой разницы. Ну и вообще этот пользователь итак локальный админ.

1. Проверить доступность сервера и порта.
2. Какой адрес пользователя?

With cdoConfig.Fields
    .Item(cdoConfigURL & "sendusing") = 2
    .Item(cdoConfigURL & "smtpauthenticate") = 1
    .Item(cdoConfigURL & "smtpserver") = SMTPserver
    .Item(cdoConfigURL & "sendusername") = sendusername
    .Item(cdoConfigURL & "sendpassword") = sendpassword
' для отправки почты с аккаунта @gmail.com
    .Item(cdoConfigURL & "smtpserverport") = 465 'порт для SSL: 465
    .Item(cdoConfigURL & "smtpusessl") = 1  'использовать аутентификацию: да
    .Update
End With

#5 Ответ от A77x7 19 сентября 2014г. 14:49:32

  • A77x7
  • Участник
  • На форуме с 14 марта 2014г.
  • Сообщений: 79
  • Спасибо: 0

Re: Отправка сообщений через внешнюю почту (CDO)

Разобрались, виноват MacAfee (антивирус).
Спасибо.

Сообщения 5

Тему читают: 1 гость

Страницы 1

Чтобы отправить ответ, вы должны войти или зарегистрироваться

Я работаю над классическим сайтом ASP и Vbscript, который использует CDO.Message для отправки электронной почты в функции. У меня проблемы с этой функцией, и я получаю сообщение об ошибке,

CDO.Message.1 error '80040213'

The transport failed to connect to the server.

Я считаю, что это связано с настройками аутентификации SMTP и общим хостом, на котором мы работаем. Я ищу помощь в отладке проблемы дальше.

Вот основной фрагмент кода из функции,

Set objConfig = Server.CreateObject("CDO.Configuration")
Set Fields = objConfig.Fields

' Set config fields we care about
With Fields
 .Item(cdoSendUsingMethod)       = cdoSendUsingPort
 .Item(cdoSMTPServer)            = "mail.<website>.com"

 '.Item(cdoSMTPServerPort)        = 25
 '.Item(cdoSMTPConnectionTimeout) = 10
 '.Item(cdoSMTPAuthenticate)      = cdoBasic
 '.Item(cdoSendUserName)          = "support"
 '.Item(cdoSendPassword)          = "password"

 .Update
End With

Set objMessage = Server.CreateObject("CDO.Message")

Set objMessage.Configuration = objConfig

With objMessage
 .To       = lEmailTo                   '"Display Name <email_address>"
 .From     = lEmailFrom                 '"Display Name <email_address>"
 .Subject  = lSubject
 .TextBody = lMessage
 .Send
End With

Сначала я подумал, что это могли быть закомментированные строки 9-13 в приведенном выше фрагменте, но оказалось, что предыдущий разработчик прокомментировал их намеренно и что функция электронной почты в какой-то момент все еще работала. Раскомментирование этих строк по-прежнему не устраняет ошибку.

Может ли кто-нибудь увидеть что-нибудь, что я мог пропустить? Кто-нибудь знает, какие значения по умолчанию для CDO.Configuration и какие настройки SMTP этот код пытается использовать с нашим общим хостом? Должен ли я сначала позвонить нашему хостингу и уточнить у них?

2 ответа

У меня были трудные времена с CDO, пока я не включил библиотеку типов вверху страницы asp. Обратите внимание, что typelib не находится внутри разделителей <% %>. Строка typelib довольно длинная, поэтому вам нужно прокрутить вправо, чтобы прочитать ее всю.

Попробуйте сначала добавить на страницу только оператор typelib.

Если это не сработает, попробуйте остальной код ниже. Я успешно использовал этот код на своих веб-сайтах, размещенных на Godaddy. Конечно, вам нужно будет указать информацию о вашем почтовом сервере и логин/пароль, если это необходимо.

<!--METADATA TYPE="typelib" UUID="CD000000-8B95-11D1-82DB-00C04FB1625D" NAME="CDO for Windows 2000 Type Library" -->
<%
Sub SendEmail()

    Set cdoConfig = CreateObject("CDO.Configuration")

    if lcase(Request.ServerVariables("SERVER_NAME")) = "dev" then
            With cdoConfig.Fields
                    .Item(cdoSendUsingMethod) = cdoSendUsingPort
                    .Item(cdoSMTPServer) = "xxx.<devmailservername>.xxx"
                    .Item(cdoSMTPAuthenticate) = 1
                    .Item(cdoSendUsername) = "xxxxxxxx@yyyyyyyyy.com"
                    .Item(cdoSendPassword) = "<passwordgoeshere>"
                    .Update
            End With
    else
            With cdoConfig.Fields
                    .Item(cdoSendUsingMethod) = cdoSendUsingPort
                    .Item(cdoSMTPServer) = "xxx.<productionmailservername>.xxx"
                    .Update
            End With
    end if

    Set cdoMessage = CreateObject("CDO.Message")

    With cdoMessage
        Set .Configuration = cdoConfig
        .From = "xxxxxxx@yyyyyyyy.com"
        .To = "yyyyyyyy@zzzzzzzzz.com"
        .Subject = "Sample CDO Message"
        .htmlbody = "<html><body>Sample <b>CDO</b> message.</body></html>"
        .TextBody = "Sample CDO Message."
        .Send
    End With

    Set cdoMessage = Nothing
    Set cdoConfig = Nothing

End Sub
%>


1

TylerH
25 Мар 2019 в 17:44

Я изменил cdoSMTPServer на localhost, все готово!


-2

nrub
30 Ноя 2009 в 14:31

Опубликовал | Дата 23 сентября, 2014

Сегодня у одних моих клиентов перестала работать отправка почты через mail.ru. Рассылка была настроена самописной внешней обработкой с использованием компоненты CDO.Configuration.

Надо сказать, что Mail.ru и Yandex.ru совсем недавно поменяли настройки своих серверов исходящей почты, из-за чего все это и случилось.

Вроде бы ничего сложного… Все настройки (имена серверов, номера портов и т.п.) есть в помощи этих служб. Но мне пришлось помучиться, чтобы все заработало.

На форумах, не смотря на многочисленные посты, внятных ответов было не много.  Для пробы, попробовал настроить почту через Яндекс — получилось с первого раза. А вот при отправке через Mail.ru выходила ошибки:

CDO.Message.1: Транспорту не удалось подключиться к серверу

и

Не удалось отправить сообщение на SMTP-сервер. Код ошибки транспорта: 0x80040217. Отклик сервера: not available

Честно говоря, даже не понял, в чем была моя ошибка, поскольку код для них в результате оказался идентичен. Приведу пример рабочего кода для обоих этих сервисов.

Яндекс:

Процедура ОтправитьПисьмо()

iConf = CreateObject(«CDO.Configuration»);

iMsg = CreateObject(«CDO.Message»);

iMsg.Configuration = iConf;

iMsg.From          = «Программист 1C»»»» «;

iMsg.To            = «poluchatel@mail.ru»;

iMsg.Subject       = «Тема письма»;

iMsg.textBody      = «Тело письма»;

iMsg.BodyPart.Charset = «windows-1251»;

iMsg.AddAttachment(«D:1.txt»);

iConf.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/sendusing»).            Value = 2;

iConf.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/smtpserver»).           Value = «smtp.yandex.ru»;

iConf.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/smtpserverport»).       Value = «465»;

iConf.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/smtpauthenticate»).     Value = 1;

iConf.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/sendusername»).         Value = «otpravitel@yandex.ru»;

iConf.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/sendpassword»).         Value = «пароль»;

iConf.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/smtpusessl»).           Value = 1;

iConf.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout»).Value = 60;

iConf.Fields.Update();

Попытка

iMsg.Send();

Сообщить(«Письмо отправлено.»);

Исключение

Сообщить(«Письмо не отправлено. Ошибка : «+Ошибка = ОписаниеОшибки(); ,»!»);

КонецПопытки;

КонецПроцедуры

Mail.ru

Процедура ОтправитьПисьмо()

iConf = CreateObject(«CDO.Configuration»);

iMsg = CreateObject(«CDO.Message»);

iMsg.Configuration = iConf;

iMsg.From          = «Программист 1C»»»» «;

iMsg.To            = «antmagn@mail.ru»;

iMsg.Subject       = «Тема письма»;

iMsg.textBody      = «Тело письма»;

iMsg.BodyPart.Charset = «windows-1251»;

iMsg.AddAttachment(«D:1.txt»);

iConf.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/sendusing»).            Value = 2;

iConf.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/smtpserver»).           Value = «smtp.mail.ru»;

iConf.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/smtpserverport»).       Value = «465»;

iConf.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/smtpauthenticate»).     Value = 1;

iConf.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/sendusername»).         Value = «otpravitel@list.ru»;

iConf.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/sendpassword»).         Value = «пароль»;

iConf.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/smtpusessl»).           Value = 1;

iConf.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout»).Value = 60;

iConf.Fields.Update();

Попытка

iMsg.Send();

Сообщить(«Письмо отправлено.»);

Исключение

Сообщить(«Письмо не отправлено. Ошибка: «+ОписаниеОшибки(),»!»);

КонецПопытки;

КонецПроцедуры

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка df061 рено трафик
  • Ошибка df098 рено лагуна