web-dev-qa-db-fra.com

Règle Outlook - Déplacer le courrier en lecture et plus vieux que X jours

Outlook 2010. Vous souhaitez créer une règle qui déplace tous les messages de ma boîte de réception vers un autre dossier:

  • A été lu
  • Est plus vieux que X jours

Je cherchais l’archivage automatique, mais cela ne semble pas me permettre d’être aussi précis avec mes critères.

12
Simon

Pour le moment, la meilleure façon de procéder consiste à créer un nouveau dossier de recherche avec des critères personnalisés, par exemple des éléments modifiés avant ou à une date donnée. Je clique ensuite avec le bouton droit de la souris sur le dossier et choisissez "Supprimer tout" pour envoyer tous les éléments du dossier de recherche dans le bac.

8
leon

Les dossiers de recherche sont la réponse, mais le PO interrogé à propos du courrier plus ancien que d’une date donnée. Si vous utilisez "modifié la semaine dernière", il affiche tout ce qui s'est passé au cours de la dernière semaine et filtre les éléments âgés de plus d'une semaine. Pour l'inverse, utilisez un langage comme:

  • Il y a 8 jours
  • Il ya 1 semaine
  • etc...

enter image description here

5
Flat Cat

Je cherchais quelque chose de similaire. Je dois utiliser une macro car l'archivage automatique est désactivé pour mon installation. Voici ce que je suis venu avec:

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

Cette macro est attachée à la dernière phase du cycle de vie de l'application. il s'exécute lorsque Outlook démarre. Vous voudrez probablement aussi le signer (et faire confiance à votre signature) pour que vous obteniez des plaintes en matière de sécurité.

HTH

4
end-user