在 MailItem.Send 中获取 MailItem - 事件处理程序

Getting MailItem in MailItem.Send - Event Handler

在我的代码中,我生成了一封电子邮件,然后将其显示给用户,以便他们可以在发送前对其进行编辑。他们完成编辑后,我想将编辑后的电子邮件存储为文件,但发送后我不知道如何访问它。最合乎逻辑的方法似乎是对发送事件做出反应,以便在用户发送后立即存储它:

Dim oMail As Outlook.MailItem
'Fill oMail
oMail.Display()
AddHandler oMail.Send, AddressOf MailSent

但是,MailSent 的签名必须如下所示:

Private Sub MailSent(ByRef Cancel As Boolean)

我不知道如何访问 MailSent 中的 MailItem,因为没有发件人对象或类似的东西。

也许这是不可能的,我应该改为阅读“已发送”文件夹中的最后一项?

用一个以MailItem为参数的构造函数将MailItem对象包装到自己的class中,将其保存在成员变量中,并设置事件处理程序。当事件处理程序触发时,您可以引用 class 变量。

您还可以使用 Application.ItemSend 事件,它会将正在发送的项目(可以是 MailItemMeetingRequest 对象)作为参数传递。