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

Vbscript CDO.Message—“CDO.Message”;传输无法连接到服务器。”;,vbscript,asp-classic,Vbscript,Asp Classic,我正在开发一个经典的ASP&Vbscript站点,它使用CDO.Message在函数中发送电子邮件。我在使用这个函数时遇到了问题,并且收到了错误 CDO.Message.1 error '80040213' The transport failed to connect to the server. 我相信这与SMTP身份验证设置和我们正在运行的共享主机有关。我正在寻求进一步调试该问题的帮助 下面是函数的主要代码段 Set objConfig = Server.CreateObject("C

我正在开发一个经典的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
Set objConfig=Server.CreateObject(“CDO.Configuration”)
设置字段=对象配置字段
'设置我们关心的配置字段
有田地
.Item(CDOSensingMethod)=CDOSensingPort
.Item(cdoSMTPServer)=“邮件..com”
'.Item(cdoSMTPServerPort)=25
'.Item(cdoSMTPConnectionTimeout)=10
'.Item(cdoSMTPAuthenticate)=cdoBasic
'.Item(cdoSendUserName)=“支持”
'.Item(cdoSendPassword)=“密码”
.更新
以
设置objMessage=Server.CreateObject(“CDO.Message”)
设置objMessage.Configuration=objConfig
用objMessage
.To=lEmailTo的“显示名称”
.From=lEmailFrom的“显示名称”
.Subject=lSubject
.TextBody=l消息
.发送
以
起初我认为这可能与上面代码片段中注释的第9-13行有关,但似乎之前的开发人员有意对它们进行了注释,并且电子邮件功能在某个时间点仍在工作。取消注释这些行仍然不能解决错误


有人能看到我丢失的东西吗?有人知道CDO.Configuration的默认设置是什么,以及此代码试图在共享主机上使用什么SMTP设置吗?我应该先打电话给我们的主机并向他们澄清吗?

我将cdoSMTPServer更改为localhost,一切正常

在将typelib包含在asp页面的顶部之前,我一直很难使用CDO。请注意,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
%>


暗指此代码在“某个点”起作用,但现在不起作用。当它停止工作时发生了什么变化?我想这是因为我们正在使用的共享主机发生了变化。尽管如此,你还是让我再次思考这个问题&现在问题解决了!