Office 365 和经典 ASP 与 VB.net SMTP 设置
Office 365 and Classic ASP vs. VB.net SMTP Settings
有几个关于经典 ASP 和 Office 365 的问题,但 none 似乎回答了我的特定情况,所以这里开始。
我在 Office 365 上设置了一个电子邮件帐户,并尝试使用以下代码进行 SMTP 测试:
Dim ObjSendMail, mailSubject, mailBody
Set ObjSendMail = CreateObject("CDO.Message")
mailSubject = "Test"
mailBody = "Test"
ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.office365.com"
ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587
ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = 1
ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 240
ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "email@domain.com"
ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"
ObjSendMail.Configuration.Fields.Update
ObjSendMail.To = "to_email@anotherdomain.com"
ObjSendMail.Subject = mailSubject
ObjSendMail.From = """From Name"" <email@domain.com>"
'ObjSendMail.HTMLBody = "this is the body"
ObjSendMail.TextBody = mailBody
ObjSendMail.Send
这会产生以下错误:
CDO.Message.1 错误 '80040213'
传输无法连接到服务器。
我发现这是由于 smtpusessl 设置造成的,但我需要它,如果我关闭它,我会收到错误“8004020e”。
现在,奇怪的是...我可以使用 VB.net 和下面的代码成功进行 SMTP 测试:
Dim mailClient As New SmtpClient("smtp.office365.com")
mailClient.Port = 587
mailClient.EnableSsl = True
'Your network credentials are going to be the Office 365 email address and the password
Dim cred As New System.Net.NetworkCredential("email@domain.com", "password")
mailClient.Credentials = cred
Dim message As New MailMessage()
message.From = New MailAddress("email@domain.com", "From Name")
message.[To].Add("to_email@anotherdomain.com")
message.Subject = "Test Office 365 SMTP"
message.Body = "Test Body"
mailClient.Send(message)
这告诉我,我不需要在我的服务器上配置任何东西来让经典的 ASP 版本工作...这就是我正在使用的网站的内置功能。我的问题是...我缺少什么愚蠢的设置可以消除传输错误?
谢谢。
尝试端口 25 而不是 587。您的所有其他设置(包括 smtpusessl)可以保持不变。
我怀疑端口 587 的问题是 CDO.Message 不支持所需的协议(TLS?MSA?)。我发现其他一些互联网帖子指出 ASP/VBScript 和端口 587 存在相同问题,但 .NET 应用程序没有此问题。
有几个关于经典 ASP 和 Office 365 的问题,但 none 似乎回答了我的特定情况,所以这里开始。
我在 Office 365 上设置了一个电子邮件帐户,并尝试使用以下代码进行 SMTP 测试:
Dim ObjSendMail, mailSubject, mailBody
Set ObjSendMail = CreateObject("CDO.Message")
mailSubject = "Test"
mailBody = "Test"
ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.office365.com"
ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587
ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = 1
ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 240
ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "email@domain.com"
ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"
ObjSendMail.Configuration.Fields.Update
ObjSendMail.To = "to_email@anotherdomain.com"
ObjSendMail.Subject = mailSubject
ObjSendMail.From = """From Name"" <email@domain.com>"
'ObjSendMail.HTMLBody = "this is the body"
ObjSendMail.TextBody = mailBody
ObjSendMail.Send
这会产生以下错误:
CDO.Message.1 错误 '80040213'
传输无法连接到服务器。
我发现这是由于 smtpusessl 设置造成的,但我需要它,如果我关闭它,我会收到错误“8004020e”。
现在,奇怪的是...我可以使用 VB.net 和下面的代码成功进行 SMTP 测试:
Dim mailClient As New SmtpClient("smtp.office365.com")
mailClient.Port = 587
mailClient.EnableSsl = True
'Your network credentials are going to be the Office 365 email address and the password
Dim cred As New System.Net.NetworkCredential("email@domain.com", "password")
mailClient.Credentials = cred
Dim message As New MailMessage()
message.From = New MailAddress("email@domain.com", "From Name")
message.[To].Add("to_email@anotherdomain.com")
message.Subject = "Test Office 365 SMTP"
message.Body = "Test Body"
mailClient.Send(message)
这告诉我,我不需要在我的服务器上配置任何东西来让经典的 ASP 版本工作...这就是我正在使用的网站的内置功能。我的问题是...我缺少什么愚蠢的设置可以消除传输错误?
谢谢。
尝试端口 25 而不是 587。您的所有其他设置(包括 smtpusessl)可以保持不变。
我怀疑端口 587 的问题是 CDO.Message 不支持所需的协议(TLS?MSA?)。我发现其他一些互联网帖子指出 ASP/VBScript 和端口 587 存在相同问题,但 .NET 应用程序没有此问题。