如何捕获刚刚使用VBA在Outlook中发送的电子邮件的MessageID

问题描述 投票:0回答:1

我在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
vba outlook outlook-vba
1个回答
0
投票

您需要处理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
© www.soinside.com 2019 - 2024. All rights reserved.