错误代码:80040213源CDO.Message.1无法连接

这真的只是我的第二个VBS脚本,所以要温柔…我做了任何与个人或公司有关的事情。我确信所有这些字段都是正确的。 SMTP服务器是正确的,我仔细检查提供商,因为这是我发现在其他网站上的数字1的原因。 这个脚本也将从一个特定的单元格中提取信息并粘贴到主体中…任何帮助将不胜感激! 也就是说错误在第46行是“ObjSendMail.Send”。 除了电子邮件部分,一切正常

Dim ObjSendMail Set ObjSendMail = CreateObject("CDO.Message") Set objExcel = CreateObject("Excel.Application") StopDate = DateAdd("d", -1 - Weekday(Date), Date) StartDate = StopDate-13 Dim xlApp Dim xlWkb Dim monthEnd Set xlApp = CreateObject("excel.application") Set xlWkb = xlApp.Workbooks.Open("******") xlWkb.RunAutoMacros 1 xlApp.Run ("UpdateAll") monthEnd = xlApp.cells(2,7).value xlApp.ActiveWorkbook.SaveAs strSaveFile & "Monthly Revenue Report " & Year(Now) & "." & Month(Now) & "." & Day(Now) & ".xls", 56 xlApp.Quit Set xlWkb = Nothing Set xlApp = Nothing WScript.Sleep 10000 mailSubject = "Monhtly Revenue Report " & PrevMonthName mailBody = "The Monthly Revenue Report is no ready. Month End: " & monthEnd 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") = 25 ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True 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") = "********" ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "********" ObjSendMail.Configuration.Fields.Update ObjSendMail.To = "*********" ObjSendMail.Subject = mailSubject ObjSendMail.From = "*******" 'ObjSendMail.HTMLBody = "this is the body" ObjSendMail.TextBody = mailBody ObjSendMail.Send 'Set ObjSendMail = Nothing 

如有疑问,请阅读文档 。 Office365使用提交端口(587 / tcp)提交邮件。 replace这个:

 ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 

有了这个:

 ObjSendMail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587 

并且错误应该消失(假设networking允许出站连接到端口587 / tcp)。

您可以使用端口扫描程序(如nmap , scanline或PortQry )testing端口的可访问性,也可以使用telnet手动testing端口:

 telnet smtp.office365.com 587 

到端口25 / tcp的出站连接很可能会被您的提供商阻止,作为防止/减less僵尸networking垃圾邮件的措施。

以下代码适用于smtp.office365.com。 你指出smtpusessl = true,但你不指定端口,否则你会得到错误5.7.57。

  Sub SMPTTest2() Set emailObj = CreateObject("CDO.Message") emailObj.From = "name@myaddress.com" emailObj.To = "name@youraddress.com" emailObj.Subject = "Test CDO" emailObj.TextBody = "Test CDO" 'emailObj.AddAttachment "c:\windows\win.ini" Set emailConfig = emailObj.Configuration 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/smtpserver") = "smtp.office365.com" 'Exclude the following line 'emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587 emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "name@myaddress.com" emailConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "mypassword" emailConfig.Fields.Update emailObj.Send If Err.Number = 0 Then MsgBox "Done" End Sub 

来自CDO.Message的未知电子邮件代码发送方法

 CDO_E_FAILED_TO_CONNECT 0x80040213L The transport failed to connect to the server. 

如果使用SSL,端口通常是465。