J'ai créé une règle, qui démarre un script VBA en fonction de l'objet d'un courrier électronique reçu (Règle: Sujet « MY_SUBJECT » -> Démarrer le script).
Le script VBA est alors en train de faire des choses et il devrait enfin supprimer l'email d'origine.email Supprimer la boîte de réception et de supprimer également de deleted-éléments par dossier rule-> Script
Cette partie est facile:
Sub doWorkAndDeleteMail(Item As Outlook.MailItem)
' doSomething:
' delete email from inbox
Item.Delete
End Sub
Maintenant, l'e-mail sera assis dans le dossier des éléments-supprimés. Mais ce que je dois réaliser, c'est aussi de supprimer ce courrier du dossier des éléments supprimés. Depuis que je connais le sujet de ce courrier (parce que ce qui a déclenché ma règle en premier lieu), j'ai essayé l'approche suivante:
Sub doWorkAndDeleteMail(Item As Outlook.MailItem)
' doSomething:
' delete email from inbox
Item.Delete
End Sub
' delete email from deleted items-folder
Dim deletedFolder As Outlook.Folder
Set deletedFolder = Application.GetNamespace("MAPI"). _
GetDefaultFolder(olFolderDeletedItems)
Dim i As Long
For i = myFolder.Items.Count To 1 Step -1
If (deletedFolder.Items(i).Subject) = "MY_SUBJECT" Then
deletedFolder.Items(i).Delete
Exit For
End If
Next if
End Sub
Eh bien, cela fonctionne essentiellement: On trouvera le mail avec ce sujet dans le supprimé-items-dossier et il sera supprimé, oui. Mais malheureusement, cela ne fonctionne pas comme prévu: Cette suppression permanente ne fonctionne que lorsque je recommence le script une seconde fois. Donc l'email qui déclenche mon script ne sera jamais effacé définitivement dans l'exécution actuelle de ce script, mais seulement lors de la prochaine exécution (une fois que le prochain email avec le sujet déclencheur de ma règle sera reçu) email ne sera pas supprimé, encore une fois).
Avez-vous une idée de ce que je fais mal ici? Il semble que j'ai besoin de rafraîchir mon dossier d'éléments supprimés d'une manière ou d'une autre. Ou dois-je passer mon premier Item.Delete
en quelque sorte explicitement?
http://stackoverflow.com/questions/1110612/permanently-delete-mailmessage-in-outlook-with-vba –
J'ai vu cette solution avant, oui. Je n'ai pas RDO ou CDO installé (aussi je veux une solution indépendante). Le troisième apporach (marquant le courrier avec une propriété) est tout à fait le même que le mien: peu importe si je cherche un sujet ou une autre propriété. Un peu plus sur le fond de ce fil, quelqu'un prétend qu'il y a une méthode "remove" qui supprimera un article de courrier de façon permanente dès le début. Mais cette méthode de suppression semble ne pas exister pour le type "Outlook.MailItem" (qui est l'entrée du script).Quoi qu'il en soit: je voudrais savoir ce qui ne va pas avec mon approche. – and0r
J'ai essayé le réglage et la recherche d'un sujet: Comme prévu, le comportement est exactement le même. La suppression ne fonctionne que lors de l'exécution du script la prochaine fois. – and0r