SMTP访问被所有常见的电子邮件提供程序(CDO/VBScript)阻止



至少10年,直到最近,我已经成功地通过SMTP发送电子邮件,通过使用带有CDO.Message.的简单VBScript

Set emailObj      = CreateObject("CDO.Message")
emailObj.From     = "myemail@hotmail.com>"
emailObj.To       = "myemail@hotmail.com"
emailObj.Subject  = "Test Email"
emailObj.TextBody = "This is a SMTP test email."
Set emailConfig = emailObj.Configuration
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp-mail.outlook.com"
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1  
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = 1
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "myemail@hotmail.com"
emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "mypassword"
emailConfig.Fields.Update
emailObj.Send

然而,通过一项新的测试,我注意到广泛使用的电子邮件提供商的SMTP不再有效(雅虎、GMail、Hotmail、Mail.com、Yandex(。

对于所有这些,我都收到了错误消息:

传输无法连接到服务器

为了确保这不是我的问题,我在许多计算机、国家和帐户上进行了测试。我一直在用官方提供的SMTP详细信息和端口25465587进行测试。他们中的任何一个都没有运气。

该代码仍然可以成功地与我自己公司的SMTP和我们的网络托管SMTP配合使用。

我们将软件分发给我们的客户,我们不希望他们依赖我们自己的SMTP来中继他们的邮件。他们应该能够在我们的软件上轻松设置他们的个人电子邮件帐户。过去,这就像查看他们自己的电子邮件提供商网站并输入提供的SMTP详细信息一样简单。然而,如今这样琐碎的任务似乎已经变得不可能了。

我在这里遗漏了什么吗?使用Visual Basic Script和CDO仍然可以使用广泛使用的电子邮件提供商的SMTP吗?

以下是常见电子邮件提供商及其方法的列表。

我只是不明白VBScript如何在10行代码中做到这一点。

  • MAILTRAP-EXPLICIT TLS连接(STARTTLS(
  • GMAIL-IMPLICIT TLS连接(SSL(
  • iCLOUD-EXPLICIT TLS连接(STARTTLS(
  • OUTLOOK-EXPLICIT TLS连接(STARTTLS(
  • YAHOO.COM-EXPLICIT TLS连接(STARTTLS(
  • MAIL.COM-EXPLICIT TLS连接(STARTTLS(
  • AOL.COM-EXPLICIT TLS连接(STARTTLS(
  • COMCAST.NET-EXPLICIT TLS连接(STARTTLS(

最新更新