CDO.Message - “传输无法连接到服务器”。

时间:2009-11-29 03:32:21

标签: vbscript asp-classic

我正在开发经典ASP&使用CDO.Message在函数中发送电子邮件的Vbscript站点。我遇到了这个功能的麻烦,我收到了错误,

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设置是什么?我应该先打电话给我们的主机&amp;与他们澄清?

2 个答案:

答案 0 :(得分:1)

我在使用CDO时遇到了困难,直到我在asp页面的顶部包含了typelib。请注意,类型库不在&lt; %%&gt;内。分隔符。 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 :(得分:-2)

我将cdoSMTPServer更改为localhost,所有的船型!