Правило 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", чтобы создать новый сертификат.