我正在VB.net中编写一些代码,该代码将使用密码将某些文件压缩并通过电子邮件将其发送给收件人,然后使用该zip文件的密码将第二封电子邮件发送给收件人。电子邮件是通过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
。我尝试搜索,但找不到任何东西。
我可以通过显示第二封电子邮件并将其留给用户发送或取消来解决,但是如果可能的话,我宁愿让代码来处理它。
答案 0 :(得分:0)
请等待“发送的邮件”文件夹上的Items.ItemAdd
事件触发,而不是立即发送第二封电子邮件。第一封邮件引发该事件后,您可以创建并发送第二封电子邮件。