Правило Outlook - переместите почту, которая является ЧИТАЕМОЙ и старше X дней

Outlook 2010. Хотите создать правило, которое перемещает всю почту из моей папки "Входящие" в другую папку:

  • Был прочитан
  • Старше X дней

Я смотрел на Автоархивирование, но, похоже, оно не позволяет мне быть таким конкретным с моими критериями.

3 ответа

Решение

Наилучший способ сделать это в настоящий момент - создать новую папку поиска с пользовательскими критериями, например, с элементами, измененными в определенную дату или ранее. Затем я щелкаю правой кнопкой мыши по папке и выбираю "Удалить все", которая отправляет все элементы из папки поиска в корзину.

Папки поиска - это ответ, однако ОП спрашивал о почте старше определенной даты. Если вы используете "измененный на прошлой неделе", то он показывает все за последнюю неделю и отфильтровывает вещи старше 1 недели. Для обратного, используйте язык как:

  • 8 дней назад
  • 1 неделю назад
  • так далее...

введите описание здесь

Я искал что-то подобное. Я должен использовать макрос, так как автоархивирование отключено для моей установки. Вот что я придумал:

Option Explicit
Private Sub Application_MAPILogonComplete()
    ' this runs on app startup
    Const MSG_AGE_IN_DAYS = 7

    Dim oFolder As Folder
    Dim oFilteredItems As Outlook.Items
    Dim oItem As MailItem
    Dim oDate As Date

    oDate = DateAdd("d", -MSG_AGE_IN_DAYS, Now())
    oDate = Format(oDate, "mm/dd/yyyy")

    ' you can use this command to select a folder
    'Set oFolder = Application.Session.PickFolder

    Set oFolder = Me.Session.Folders.GetFirst

    ' shows all the folder names
    'For Each fldr In oFolder.Folders
    '    Debug.Print fldr.Name
    'Next fldr

    ' this was the sub-folder I wanted to cleanup.
    Set oFolder = oFolder.Folders("Storage").Folders("batch runs")

    Debug.Print "checking " & oFolder.FolderPath
    Debug.Print "for msgs older than " & oDate

    ' you can modify the filter to suit your needs
    Set oFilteredItems = oFolder.Items.Restrict("[Received] <= '" & oDate & "' And [Unread] = True")

    Debug.Print "removing " & oFilteredItems.Count & " items"

    While oFilteredItems.Count > 0
        Set oItem = oFilteredItems.GetFirst
        Debug.Print "   " & oItem.UnRead & " " & oItem.Subject

        ' the remove method permanently deletes the item.
        oFilteredItems.Remove 1
        'Debug.Print oFilteredItems.Count & " items left"
    Wend

    Debug.Print ". end"

    Set oFolder = Nothing
    Set oFilteredItems = Nothing
    Set oItem = Nothing
End Sub

Этот макрос привязан к последней фазе жизненного цикла приложения; он запускается при запуске Outlook. Вы, вероятно, также захотите подписать его (и доверять своей подписи), чтобы получать жалобы на безопасность.

НТН

Для будущих исследователей я сделал следующее, используя инструменты разработчика.

    Public WithEvents olItems As Outlook.Items

    Sub Application_Startup()
        Set olItems = Session.GetDefaultFolder(olFolderInbox).Items
    End Sub

    Private Sub olItems_ItemChange(ByVal Item As Object)
        Dim deFolder As Folder
     
        'Ensure the email marked as read
        If TypeOf Item Is MailItem And Item.UnRead = False Then
     
        'Check the email subject and then move to specific folder
        'You can change these conditions and folders as per your needs
        If InStr(LCase(Item.Subject), "test") > 0 Then
           Set deFolder = Session.GetDefaultFolder(olFolderInbox).Parent.Folders("Test")
           Item.Move deFolder
        End If
     
        If InStr(LCase(Item.Subject), "worklog") > 0 Then
           Set deFolder = Session.GetDefaultFolder(olFolderInbox).Parent.Folders("WorkLog")
           Item.Move deFolder
        End If
     
        If InStr(LCase(Item.Subject), "report") > 0 Then
           Set deFolder = Session.GetDefaultFolder(olFolderInbox).Parent.Folders("Report")
           Item.Move deFolder
        End If
    End Sub

После этого вы должны поставить цифровую подпись на этот код. Используйте встроенный инструмент "Цифровые сертификаты для проектов VBA", чтобы создать новый сертификат.

Другие вопросы по тегам