Office 365和经典ASP与VB.net SMTP设置

SEF*_*EFL 2 vb.net asp-classic office365

关于经典ASP和Office 365有几个问题,但没有一个似乎能回答我的特定情况,所以这里有.

我在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
Run Code Online (Sandbox Code Playgroud)

这会生成以下错误:

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)
Run Code Online (Sandbox Code Playgroud)

这告诉我,我不需要在我的服务器上配置任何东西来使经典的ASP版本工作......这就是我正在研究的网站所在的内容.我的问题是......什么是愚蠢的设置我错过了将摆脱运输错误?

谢谢.

Kei*_*ith 5

尝试端口25而不是587.您的所有其他设置(包括smtpusessl)可以保持不变.

我怀疑端口587的问题是CDO.Message不支持所需的协议(TLS?MSA?).我发现一些其他的互联网帖子说明ASP/VBScript和端口587的相同问题,但.NET应用程序没有这个问题.