由VBA代码创建的草稿电子邮件项返回无法传递的错误

时间:2016-07-31 04:25:57

标签: vba email outlook

如果以前曾经问过这个问题,我很抱歉,但是我不能用我的搜索句来找我解决方案。

我在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

电子邮件立即发送,没有无法送达的错误。

有人能指出我做错的地方吗?

您的见解将非常受欢迎。

由于 专利

2 个答案:

答案 0 :(得分:0)

我从excel中运行你的代码,它运行良好。

当我打开outlook时,我发现了草稿,标记了#34;消息尚未发送"。

电子邮件保存在Outlook的“草稿”文件夹中,我可以在Outlook中查看。

我打开草稿电子邮件并按下发送按钮发送,然后成功发送。 我无法猜出这个问题,因为我没有找到它:)。 在outlook中查看您的电子邮件设置,您可能会发现一些事情。

答案 1 :(得分:0)

希望这会有所帮助。我可以通过添加对OutMail.Recipients.ResolveAll()的调用来解决此问题。

VB.NET

Call OutMail.Recipients.ResolveAll

这解决了我的问题。但是,如果您的Outlook版本不支持防病毒检测,则可能会出现一个消息框,提示您外部应用程序正在尝试访问电子邮件地址或类似的内容:

  

程序正在尝试访问电子邮件地址信息......

如果你得到这个,谷歌上面的短语找到很多关于如何解决的文章。它与Outlook中的信任设置有关。