我知道有很多关于这个的问题,但似乎没有一个对我有效的答案。
我的应用程序是ASP Classic,运行它的服务器是Windows Server2000(我知道的很旧),我使用的是Office365服务器,当我登录到电子邮件时,我使用的是Office365提供的信息(端口587,正确的用户名和密码,正确的smtp服务器,TLS设置为真)。
我总是收到"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) = "my.email@email.com"
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 = "to.email@email.com"
objCDOSYSMail.To = "my.email@email.com"
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服务。
发布于 2016-09-27 22:32:31
通过将应用程序移动到Windows Server 2012机器上,我终于能够让它工作起来。我不得不跳过几个循环,这些循环伴随着在服务器之间移动旧的东西,但我能够让它工作。
我只能使用25端口,587端口不起作用。请记住,我在原始服务器上尝试了25端口,但在那里也不起作用。
发布于 2016-09-17 19:21:44
我以前遇到过这个问题。基本上,您没有通过身份验证来使用服务器上的邮件传输。
您的SMTP服务器不允许发送出站邮件(例如,停止邮件中继),您的用户名和密码不正确,或者您使用的端口需要更高的安全级别才能发送邮件。在后一种情况下,Office365可能需要SSL auth...maybe,值得一看。
如果所有其他方法都失败了,您可以尝试使用第三方提供商。我们在他们的GB4.35包中使用SendInBlue。你最多可以通过他们的系统发送40,000封电子邮件。我们发现,将邮件发送到第三方可以完全消除服务器设置导致邮件传输功能停止的问题。我们现在对传统的ASP和PHP站点都使用它。
希望这能有所帮助。
发布于 2016-09-17 21:35:23
使用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") = "myaccount@mydomain.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "mypassword"
.Update
End With
objMail.Configuration = iConfg
https://stackoverflow.com/questions/39497697
复制相似问题