使用 Outlook 2010 和 Gmail/IMAP 时,使用规则将邮件移动到文件夹也会将其标记为已读。之前有一个关于此主题的问题,但没有适合我的答案。第一个答案说不应该发生这种情况(使用 Gmail/IMAP 时不正确),第二个答案提供了一个 VBA 选项,但似乎没有任何作用。我尝试了此代码,但没有成功:
Sub unread(MyItem As MailItem) MyItem.unread = True End Sub
除了不要将 Outlook 与 Gmail 一起使用(我希望这是一个选项)之外,还有其他建议吗?我是否也需要使用 vba 移动消息?
编辑:否,未检查标记为已读。
答案1
您可以使用Items.ItemAdd事件
代码位于内置的 ThisOutlookSession 模块中。
您可以单独监控每个文件夹!
声明 Items 集合对象每个包含事件的文件夹
实例化每个Application_Startup 事件处理程序中的 Items 集合对象
添加 ItemAdd 事件处理程序每个Items 集合对象
Option Explicit
' Sample folder directly under the inbox
Private WithEvents SubfolderAItems As Items
' Sample folder directly under SubfolderA
Private WithEvents SubfolderBItems As Items
Private Sub Application_Startup()
Dim objNS As NameSpace
Set objNS = Application.Session
' instantiate objects declared WithEvents
Set SubfolderAItems = objNS.GetDefaultFolder(olFolderInbox).Folders("SubfolderA").Items
Set SubfolderBItems = objNS.GetDefaultFolder(olFolderInbox).Folders("SubfolderA").Folders("SubfolderB").Items
Set objNS = Nothing
End Sub
' Note: Changes behaviour of dragging items into the folder as well.
Private Sub SubfolderAItems_ItemAdd(ByVal Item As Object)
Item.unread = True
End Sub
Private Sub SubfolderBItems_ItemAdd(ByVal Item As Object)
Item.unread = True
End Sub