Outlook 2010 Outlook 2010,将电子邮件复制到文件夹中,并将复制的电子邮件标记为已读,但将原始电子邮件保留为未读

Outlook 2010 Outlook 2010,将电子邮件复制到文件夹中,并将复制的电子邮件标记为已读,但将原始电子邮件保留为未读,outlook-2010,Outlook 2010,我制定了规则,将包含特定关键字的电子邮件复制到特定文件夹,并标记为已读 我遇到的问题是,当它将这些电子邮件复制到文件夹时,会将收件箱中的原始电子邮件标记为已读,这可能会导致我错过邮件。 如果我没有将它标记为已读,那么当我在收件箱中阅读它时,它在特定文件夹中保持未读状态 我找不到任何规则属性来完成此任务,有人有什么想法吗?将规则设置为复制到目标文件夹,但不标记为已读 将此未测试的代码放入ThisOutlookSession模块中。假设目标文件夹位于收件箱的正下方。如果埋得更深,根据需要添加.Fol

我制定了规则,将包含特定关键字的电子邮件复制到特定文件夹,并标记为已读

我遇到的问题是,当它将这些电子邮件复制到文件夹时,会将收件箱中的原始电子邮件标记为已读,这可能会导致我错过邮件。 如果我没有将它标记为已读,那么当我在收件箱中阅读它时,它在特定文件夹中保持未读状态


我找不到任何规则属性来完成此任务,有人有什么想法吗?

将规则设置为复制到目标文件夹,但不标记为已读

将此未测试的代码放入ThisOutlookSession模块中。假设目标文件夹位于收件箱的正下方。如果埋得更深,根据需要添加.Folders

Option Explicit

' one line for each target folder
Private WithEvents myOlItemsA  As Outlook.Items
Private WithEvents myOlItemsB  As Outlook.Items

Private Sub Application_Startup()

    Dim olApp As Outlook.Application
    Dim objNS As Outlook.NameSpace
    Set olApp = Outlook.Application
    Set objNS = olApp.GetNamespace("MAPI")

    ' one line for each target folder
    Set myOlItemsA = objNS.GetDefaultFolder(olFolderInbox).Folders("targetfoldernameA").Items
    Set myOlItemsB = objNS.GetDefaultFolder(olFolderInbox).Folders("targetfoldernameB").Items

End Sub

' one copy of ItemAdd code for each target folder
Private Sub myOlItemsA_ItemAdd(ByVal item As Object)

    On Error GoTo ErrorHandler
    Dim Msg As Outlook.MailItem

    If TypeName(item) = "MailItem" Then
        Set Msg = item
        Msg.Unread = False
    End If

ProgramExit:
    Set Msg = Nothing
    Exit Sub

ErrorHandler:
    MsgBox Err.Number & " - " & Err.Description
    Resume ProgramExit

End Sub

Private Sub myOlItemsB_ItemAdd(ByVal item As Object)
 ' same code as for myOlItemsA
End Sub
基于此帖子的代码


这些规则将邮件移动到目标文件夹。ItemAdd代码作用于添加到目标文件夹的项目。

是否使用exchange?我认为outlook不会用exchange电子邮件将其标记为未读。其他电子邮件提供商(如gmail)可能会导致您的问题。作为解决方法,您可以将邮件移动到新文件夹,也可以将其邮件再次转发给您自己。@Mike Cheel不仅仅是标准的MS outlook2010@davidhigh可以工作,如果我找不到一个好的解决办法,我会试试这个。