2016-09-14 177 views
1

我知道这里有很多问题,但没有一个似乎有一个适用于我的答案。ASP经典电子邮件'80040213'运输无法连接到服务器

我的应用程序是ASP Classic,它运行的服务器是Windows Server 2000(我很熟悉),我使用的是Office365服务器,当我登录到电子邮件时使用Office365提供的信息(端口587,正确的用户名和密码,正确的SMTP服务器,TLS设置为true)。

我总是得到“CDO.Message.1错误‘80040213’运输未能连接到服务器。”作为错误消息,它发生错误的行是.Send命令。

Const cdoSendUsingMethod   = "http://schemas.microsoft.com/cdo/configuration/sendusing" 
    Const cdoSendUsingPort    = 2 
    Const cdoSMTPServer    = "http://schemas.microsoft.com/cdo/configuration/smtpserver" 
    Const cdoSMTPServerPort   = "http://schemas.microsoft.com/cdo/configuration/smtpserverport" 
    Const cdoSMTPConnectionTimeout  = "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout" 
    Const cdoSMTPAuthenticate   = "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" 
    Const cdoBasic      = 1 
    Const cdoSendUserName    = "http://schemas.microsoft.com/cdo/configuration/sendusername" 
    Const cdoSendPassword    = "http://schemas.microsoft.com/cdo/configuration/sendpassword" 
    'Use SSL for the connection (False or True) 
    Const cdoSendTLS     = "http://schemas.microsoft.com/cdo/configuration/smtpusessl" 

    ' create CDOSYS objects 
    Set objCDOSYSMail = Server.CreateObject("CDO.Message") 
    Set objCDOSYSCon = Server.CreateObject ("CDO.Configuration") 

    'Set our smtp server 
    objCDOSYSCon.Fields.Item(cdoSMTPServer) = "smtp.office365.com" 
    objCDOSYSCon.Fields.Item(cdoSMTPAuthenticate) = cdoBasic 
    objCDOSYSCon.Fields.Item(cdoSendUserName) = "[email protected]" 
    objCDOSYSCon.Fields.Item(cdoSendPassword) = "password" 
    'objCDOSYSCon.Fields.Item(cdoSMTPServerPort) = 587 
    objCDOSYSCon.Fields.Item(cdoSendUsingMethod) = cdoSendUsingPort 
    objCDOSYSCon.Fields.Item(cdoSendTLS) = True 
    objCDOSYSCon.Fields.Item(cdoSMTPConnectionTimeout) = 30 

    objCDOSYSCon.Fields.Update 

    'Use our new configurations for our mailer 
    Set objCDOSYSMail.Configuration = objCDOSYSCon 

    strSpecFile = Application("px683_network_downloads_specs") & strSpecFileName 

    objCDOSYSMail.From = "[email protected]" 
    objCDOSYSMail.To = "[email protected]" 
    objCDOSYSMail.Subject = "A subject" 
    objCDOSYSMail.HTMLBody = "Some text for the body" 

    'Normal level of importance 
    objCDOSYSMail.Send 

    set objCDOSYSMail = nothing 
    set objCDOSYSCon = nothing 

我试了端口25没有任何运气以及。如果我使用另一个根本不使用SSL的电子邮件服务(本地服务,而不是Office365),我没有问题(我注释掉usessl并将端口更改为25)。此外,如果我尝试使用ASP.Net应用程序中完美运行的其他电子邮件服务,则会遇到同样的问题,此其他电子邮件服务使用端口25和SSL,而不是Office365服务。

+0

从'的telnet smtp.office365.com 587'命令行中键入如果你没有得到一个“服务就绪”的回复,你的互联网服务提供商阻止端口。 – Henry

+1

我已经试过了,只是忘了提及它。我得到服务准备就绪,但自从您恢复准备就绪后,我重试并尝试进行一些挖掘(尝试登录)。我进来了,但是当我进入MAIL FROM:命令的时候,我得到了2个响应,第一个是“无效地址”,这很奇怪,所以我重试了,并且我得到了“客户端未通过身份验证发送匿名邮件的邮件” – Atlim

回答

0

我终于能够通过将应用程序移动到Windows Server 2012计算机来实现这个工作。我不得不跳过两个循环,这些循环是在服务器之间移动一些旧的东西,但我能够实现它的工作。

我只能使用端口25,587不起作用。请记住,我尝试了原始服务器上的端口25,但在那里也没有工作。

0

我以前有过这个问题。基本上你没有被认证使用服务器上的邮件传输。

无论您的SMTP服务器不允许发送出站邮件(例如停止邮件中继),你的用户名和密码不正确,或者您正在使用需要更高的安全级别的端口来发送邮件。在后面的例子中,它可能是Office365需要SSL认证......也许值得一看。

如果一切都失败,您可以尝试使用第三方提供商。我们在他们的£4.35包装上使用SendInBlue。您可以通过他们的系统发送多达40,000封电子邮件。我们发现,将邮件发送给第三方完全可以解决停止邮件传输功能的服务器设置问题。我们现在将这个用于经典ASP和PHP网站。

希望有所帮助。

+0

我有正确的用户名和密码,因为我可以使用microsoft在线登录页面登录Office365,而且我使用的端口,SMTP服务器和TLS基于Office 365电子邮件帐户在登录时提供的设置信息。我们的其他电子邮件服务在非VBScript程序中工作得非常好,但其他电子邮件服务在此不起作用,所以我的下一个猜测是它必须是服务器不允许使用电子邮件,但如前所述,我可以使用非SSL服务这工作得很好。 – Atlim

0

对于Office 365和CDO,即使您使用认证,也必须使用端口25。看看你的代码,我认为这个端口是唯一需要改变的地方,但是这里有一个久经考验的配置。

Set iConfg = Server.CreateObject("CDO.Configuration") 
Set Flds = iConfg.Fields 
With Flds 
     .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.office365.com" 
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60 
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1 
     .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = true 
     .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]" 
     .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "mypassword" 
     .Update 
End With 
objMail.Configuration = iConfg 
+0

我在我的代码片段后面提到了我已经尝试了与完全相同的问题的端口25。我试过你的代码片段,但是我收到完全相同的问题。 – Atlim

+0

就像我说的那样,这个配置 - 显然带有不同的用户名和密码 - 对我很有用。有各种各样的事情可以触发“传输无法连接到服务器”的消息,这可能是值得与运行自己的Web服务器的人交谈。这是一个可能感兴趣的链接。 https://clicdatacoder.wordpress.com/2012/07/13/sending-smtp-mail-via-office-365-exchange-using-cdo-message-and-other-applications/ – John