在outlook vba中,如何查找邮件项目的读取日期时间?
我希望能够了解在microsoft outlook中收到的电子邮件被读取的时间/日期 我看不到Outlook保存了这些信息。LastModificationTime似乎也没有反映这一点-当项目标记为已读时(至少在Outlook 2007中)它不会更新 假设这是正确的,我决定将来存储此信息,并创建一个userproperty来反映这一点。我已经用以下代码钩住了mailitem.PropertyChange事件处理程序,但它不是一个非常通用的解决方案-我必须将代码放入我使用的每个Outlook应用程序中。有没有更有效的方法 此代码放置在ThisOutlookSession模块中(Outlook已重新启动)在outlook vba中,如何查找邮件项目的读取日期时间?,vba,outlook,Vba,Outlook,我希望能够了解在microsoft outlook中收到的电子邮件被读取的时间/日期 我看不到Outlook保存了这些信息。LastModificationTime似乎也没有反映这一点-当项目标记为已读时(至少在Outlook 2007中)它不会更新 假设这是正确的,我决定将来存储此信息,并创建一个userproperty来反映这一点。我已经用以下代码钩住了mailitem.PropertyChange事件处理程序,但它不是一个非常通用的解决方案-我必须将代码放入我使用的每个Outlook应用程
Private,使用事件对象作为Outlook.Explorer
Private WithEvents myItem作为Outlook.MailItem
私有子应用程序_启动()
设置objExplorer=Application.ActiveExplorer
端接头
私有子对象explorer\u SelectionChange()
如果objExplorer.CurrentFolder.DefaultItemType=olMailItem,则
如果objExplorer.Selection.count>0,则
设置myItem=objExplorer.Selection(1)
如果结束
如果结束
端接头
私有子myItem_PropertyChange(ByVal名称为字符串)
'Debug.Print Name&“=”&myItem.UnRead
如果Name=“UnRead”和myItem.UnRead=False,则
将myProperty设置为Outlook.UserProperty
设置myProperty=myItem.UserProperties(“ReadTime”)
如果(myProperty为Nothing),则设置myProperty=myItem.UserProperties.Add(“ReadTime”,olNumber)
myProperty.Value=Now()
我的项目。保存
'Debug.Print格式(myItem.UserProperties(“ReadTime”),“hh:mm:ss dd/mm/yy”)
ElseIf Name=“未读”和myItem.UnRead=True则
myItem.UserProperties(“ReadTime”).Delete
如果结束
'调试。打印
End Sub
您是对的,Outlook对象模型不提供任何有关读取状态的信息(标记为读取的时间)
VBA不是为在多台PC上分发而设计的。您需要开发Outlook加载项。这正是他们被介绍的目的。请参阅开始。您不能这样做-严格来说,已读/未读状态甚至不是消息的一部分:它是单独存储的。和Exchange公用文件夹存储以每个用户为单位存储该状态 如果设置用户属性,除非调用Save,否则不会持久化该属性,但这将更改上次修改时间