【问题标题】:Verify if an Outlook Email Sent From VB.net was Actually Sent验证从 VB.net 发送的 Outlook 电子邮件是否实际发送
【发布时间】:2019-01-10 05:15:23
【问题描述】:

我正在 VB.net 中编写一些代码,它将使用密码压缩一些文件并将它们通过电子邮件发送给收件人,然后向收件人发送第二封电子邮件,其中包含压缩文件的密码。电子邮件通过 Outlook 发送。

使用它的人在 Outlook 的 Application_ItemSend 事件过程中也有一些 VBA 代码,该代码检查是否有附件发送到外部电子邮件地址,如果有,它会为用户提供详细信息和取消发送电子邮件的选项- 这是使用 Application_ItemSend 事件过程的 Cancel 属性/参数完成的(抱歉,我不擅长 VBA/VB.net 中的正确术语)。

如果用户确实取消了第一封电子邮件,那么我也想阻止第二封电子邮件发送出去。我试过检查(在调用 MailItem.Send() 之后直接)MailItem.Sent.ToString 但它在那一行出现错误并给出了这个异常 - System.Runtime.InteropServices.COMException: 'The item has been moved or deleted.

我的第一个想法是,一旦MailItem.Send() 被调用,MailItem 就什么都不是了,但我刚刚关注了MailItem Is Nothing,它正在返回False。我已经尝试过搜索,但没有找到任何东西。

我可以通过显示第二封电子邮件来解决问题,并将其留给用户发送或取消,但如果可能的话,我宁愿让代码处理它。

【问题讨论】:

    标签: vb.net email outlook


    【解决方案1】:

    不要立即发送第二封电子邮件,而是等到“已发送邮件”文件夹上触发 Items.ItemAdd 事件。一旦第一条消息引发该事件,您就可以创建并发送第二封电子邮件。

    【讨论】:

    • 感谢 Dmitry 的建议,但我认为我无法检查是否从 vb.net 代码触发了事件。即使你可以错过一些东西,例如如果用户没有打扰或注意到他们得到的弹出窗口上单击“确定”按钮,那么这种方法可能会错误地将其视为已取消。我知道我可以添加某种计时器,但这不是完美的解决方案,因为这意味着应用程序将在我设置的任何时间段内暂停原因他们点击确定但不在将被视为取消的期限内。
    猜你喜欢
    • 2011-02-10
    • 2018-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-25
    • 2015-12-28
    • 2016-11-01
    相关资源
    最近更新 更多