如果以前曾经问过这个问题,我很抱歉,但是我不能用我的搜索句来找我解决方案。
我在Excel(2014)中使用以下VBA代码创建电子邮件草稿:
Sub Send_email()
Dim OutApp As Object
Set OutApp = CreateObject("Outlook.Application")
Dim OutMail As Object
Set OutMail = OutApp.CreateItem(0)
With OutMail
.To = "myself@hotmail.com"
.Subject = "test email"
.HTMLBody = "Sample test body"
.Save
End With
Set OutMail = Nothing
Set OutApp = Nothing
End Sub
这一切都运行良好,电子邮件保存在我的Outlook的草稿文件夹中。我打开保存的电子邮件并手动发送。我收到系统管理员发送的无法传送的错误消息"您的消息未到达部分或全部目标收件人。"。
但是,如果我使用:
.Send
而不是
.Save
电子邮件立即发送,没有无法送达的错误。
有人能指出我做错的地方吗?
您的见解将非常受欢迎。
由于 专利
答案 0 :(得分:0)
我从excel中运行你的代码,它运行良好。
当我打开outlook时,我发现了草稿,标记了#34;消息尚未发送"。
电子邮件保存在Outlook的“草稿”文件夹中,我可以在Outlook中查看。
我打开草稿电子邮件并按下发送按钮发送,然后成功发送。 我无法猜出这个问题,因为我没有找到它:)。 在outlook中查看您的电子邮件设置,您可能会发现一些事情。
答案 1 :(得分:0)
希望这会有所帮助。我可以通过添加对OutMail.Recipients.ResolveAll()
的调用来解决此问题。
VB.NET
Call OutMail.Recipients.ResolveAll
这解决了我的问题。但是,如果您的Outlook版本不支持防病毒检测,则可能会出现一个消息框,提示您外部应用程序正在尝试访问电子邮件地址或类似的内容:
程序正在尝试访问电子邮件地址信息......
如果你得到这个,谷歌上面的短语找到很多关于如何解决的文章。它与Outlook中的信任设置有关。