CDO.Message - «Транспорту не удалось подключиться к серверу». - PullRequest
3 голосов
/ 29 ноября 2009

Я работаю над классическим сайтом 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 ]

1 голос
/ 07 ноября 2011

Мне было сложно с CDO, пока я не включил typelib вверху страницы 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
%>
0 голосов
/ 30 ноября 2009

Я изменил cdoSMTPServer на localhost, все формы корабля!

...