我在vba中生成了一封电子邮件并将其发送。我有一个包含该电子邮件发送事件的类,因此我可以判断该电子邮件是否已发送。我的问题是,发送电子邮件后,我需要捕获MessageID属性。我以为可以使用class变量并从中获取属性,但是似乎没有消息ID,但是那是行不通的,所以我假设messageID直到以后的事件才出现。那么,还有什么其他事件可以挂接到messageID生成后发生的事件上吗?我认为卸载可能会起作用,但似乎没有。另外,我考虑过在发送之后尝试使用outmail对象,但是我猜想outmail对象在发送之后什么也没有,这就是为什么我在类中尝试这样做。
我在课堂活动中的代码如下:
Option Explicit
Public WithEvents oMailItem As Outlook.MailItem
Public WithEvents oOutlookApp As Outlook.Application
Public Sub oMailItem_Send(Cancel As Boolean)
'Find what version number from previous query of base review table --- ActiveVersion
If Err.Number <> 0 Then
Cancel = True
EmailSent = False
Else
EmailSent = True
MsgBox oMailItem.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x1035001E")
End If
End Sub
您需要处理ItemAdd文件夹的Items
类的Sent Items
事件,当将一个或多个项目添加到指定的集合时将触发该事件。
Public WithEvents myOlItems As Outlook.Items
Public Sub Initialize_handler()
Set myOlItems = Application.GetNamespace("MAPI").GetDefaultFolder(olFolderSentMail).Items
End Sub
Private Sub myOlItems_ItemAdd(ByVal Item As Object)
MsgBox Item.Subject
End Sub