跳至主要内容

如何在Outlook中将超过特定天数的未读邮件自动标记为已读?

Author: Xiaoyang Last Modified: 2025-05-07

如果您的收件箱文件夹中有多个未读邮件,通常您可以手动使用“全部标记为已读”功能将所有未读邮件标记为已读。但是,您是否尝试过在Outlook中不每次都手动设置的情况下,将超过特定天数的未读邮件自动标记为已读呢?

使用VBA代码自动将超过特定天数的未读邮件标记为已读


使用VBA代码自动将超过特定天数的未读邮件标记为已读

要自动将所有超过特定天数的未读邮件标记为已读,以下VBA代码可以帮到您:

1. 按住 ALT + F11 键打开 Microsoft Visual Basic for Applications 窗口。

2. 在 Microsoft Visual Basic for Applications 窗口中,双击 Project1(VbaProject.OTM) 窗格中的 ThisOutlookSession 打开模块,然后将以下代码复制并粘贴到空白模块中。

VBA代码:自动将超过特定天数的未读邮件标记为已读:

Private Sub Application_Startup()
        Call MarkOldUnreadEmailsAsRead
    End Sub
    Private Sub MarkOldUnreadEmailsAsRead()
    Dim xInboxFld As Outlook.Folder
    Dim xAccount As Account
    On Error GoTo L1
    For Each xAccount In Outlook.Application.Session.Accounts
        Set xInboxFld = xAccount.DeliveryStore.GetDefaultFolder(olFolderInbox)
        Call Processfolders(xInboxFld)
    Next xAccount
L1:     Exit Sub
    End Sub
    Private Sub Processfolders(ByVal InboxFld As Outlook.Folder)
    Dim xItems As Outlook.Items
    Dim i As Long
    Dim xSubFld As Outlook.Folder
    On Error Resume Next
    Set xItems = InboxFld.Items
    For i = 1 To xItems.Count
        If DateDiff("d", xItems(i).ReceivedTime, Now) >= 15 Then
           If xItems(i).UnRead = True Then
              xItems(i).UnRead = False
              xItems(i).Save
           End If
        End If
    Next
    If InboxFld.Folders.Count > 0 Then
       For Each xSubFld In InboxFld.Folders
           Call Processfolders(xSubFld)
       Next
    End If
End Sub

注意:在上面的代码中,您可以根据需要更改脚本中的天数:If DateDiff("d", xItems(i).ReceivedTime, Now) >= 15 Then 中的数字。

the screenshot of marking unread emails older than specific days as read automatically in Outlook

3. 然后保存并关闭此代码窗口,从那时起,每次启动Outlook时,所有超过预定义天数的未读邮件都会立即自动标记为已读。

注意:此代码仅适用于默认数据账户。