【发布时间】: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。我已经尝试过搜索,但没有找到任何东西。
我可以通过显示第二封电子邮件来解决问题,并将其留给用户发送或取消,但如果可能的话,我宁愿让代码处理它。
【问题讨论】: