【问题标题】:Office 365 and Classic ASP vs. VB.net SMTP SettingsOffice 365 和经典 ASP 与 VB.net SMTP 设置
【发布时间】:2015-09-26 02:05:59
【问题描述】:

有几个关于经典 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

这会产生以下错误:

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 版本工作......这是我正在处理的网站的内置内容。我的问题是...... .我错过了什么愚蠢的设置来消除传输错误?

谢谢。

【问题讨论】:

  • 正确 - 您无需在 Office 365 端配置任何内容即可通过 ASP.NET 发送电子邮件。我有点困惑 - 如果它与您拥有的 vb 代码一起工作正常,为什么还要询问修复传输错误?
  • 因为 ASP.net 代码是测试代码,以查看我是否拥有正确的身份验证凭据、服务器等。我正在处理的购物车是在经典 ASP 中构建的。

标签: vb.net asp-classic office365


【解决方案1】:

尝试使用端口 25 而不是 587。您的所有其他设置,包括 smtpusessl,都可以保持不变。

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

【讨论】:

  • 好吧,这很奇怪……我专门使用 587,因为几乎每条与 Office 365 相关的指令都这么说。你是对的,虽然...... 25 工作。我自己从来没有看过那些帖子,但这绝对解决了它。谢谢,伙计。
  • 我遇到了完全相同的问题,但尝试使用端口 25 时也出现了相同的错误 CDO.Message.1 error '80040213' The transport failed to connect to the server。还有其他可能导致问题的原因吗?
猜你喜欢
  • 2018-09-27
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 2011-06-23
  • 1970-01-01
  • 1970-01-01
  • 2017-09-07
  • 2016-06-04
相关资源
最近更新 更多