我有以下代码使用CDO从VBA宏发送邮件。我在代码中遇到错误:
传输失败连接服务器错误
我正在从Gmail SMTP服务发送邮件。看起来配置设置正确,但不知怎的,它不起作用。
Sub Email()
Dim CDO_Mail As Object
Dim CDO_Config As Object
Dim SMTP_Config As Variant
Dim strSubject As String
Dim strFrom As String
Dim strTo As String
Dim strCc As String
Dim strBcc As String
Dim strBody As String
strSubject = "Results from Excel Spreadsheet"
strFrom = "xxx@gmail.com"
strTo = "xxx@gmail.com"
strBody = "The total results are: 167"
Set CDO_Mail = CreateObject("CDO.Message")
Set CDO_Config = CreateObject("CDO.Configuration")
CDO_Config.Load -1
Set SMTP_Config = CDO_Config.Fields
With SMTP_Config
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "xxxx@gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "xxxx"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465
.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.Update
End With
With CDO_Mail
Set .Configuration = CDO_Config
End With
CDO_Mail.Subject = strSubject
CDO_Mail.From = strFrom
CDO_Mail.To = strTo
CDO_Mail.TextBody = strBody
CDO_Mail.Send
End Sub
答案 0 :(得分:1)
该代码对我来说完全正常(将从 Gmail 发送到 Gmail) - 因此您需要检查以下内容:
Access for less secure apps
配置您的发送帐户 - 以下support page Turn On
个选项
允许安全性较低的应用访问您的帐户 Google可能会阻止某些不使用现代安全标准的应用或设备的登录尝试。由于这些应用和设备更容易入侵,因此阻止它们有助于确保您的帐户安全。
不支持最新安全标准的应用程序的一些示例包括:
适用于iOS 6或更低版本的iPhone或iPad上的邮件应用
8.1版本之前Windows手机上的Mail应用程序
某些桌面邮件客户端,如Microsoft Outlook和Mozilla Thunderbird
...
选项2:更改您的设置,以允许安全性较低的应用访问您的帐户。我们不推荐此选项,因为它可能会让某人更容易侵入您的帐户。如果您仍想允许访问,请按照以下步骤操作:
转到"安全性较低的应用"我的帐户中的部分。
"访问不太安全的应用,"选择开启。 (Google Apps用户请注意:如果您的管理员已锁定不太安全的应用帐户访问权限,则会隐藏此设置。)
CDO现在已经很老了,所以假设这是一个不支持最新安全标准的应用程序示例。