在 Outlook 2010/Gmail 中将自动移动到文件夹(使用规则)的邮件标记为未读

在 Outlook 2010/Gmail 中将自动移动到文件夹(使用规则)的邮件标记为未读

使用 Outlook 2010 和 Gmail/IMAP 时,使用规则将邮件移动到文件夹也会将其标记为已读。之前有一个关于此主题的问题,但没有适合我的答案。第一个答案说不应该发生这种情况(使用 Gmail/IMAP 时不正确),第二个答案提供了一个 VBA 选项,但似乎没有任何作用。我尝试了此代码,但没有成功:

Sub unread(MyItem As MailItem) MyItem.unread = True End Sub

除了不要将 Outlook 与 Gmail 一起使用(我希望这是一个选项)之外,还有其他建议吗?我是否也需要使用 vba 移动消息?

编辑:否,未检查标记为已读。

答案1

您可以使用Items.ItemAdd事件

如何在 Microsoft Outlook 中处理传入邮件

代码位于内置的 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

相关内容