If you want Outlook to automatically remove delete sent messages as they age, you can set an expire date. When this date passes, the message will be marked with a line drawn through it and Autoarchive or Mailbox Manager will delete it the next time it runs.
In this screenshot, we have one message that expired and one that has not expired.
To set an expiration date on any single message, open the Options dialog and enter an expiration date.
Use VBA to expire all messages you send
Open the VBA Editor and paste the code into ThisOutlookSession. Click in Application_StartUp and click the Run button to kick start it without restarting Outlook. Macro security needs to be set to Low to test it, the macro should be signed and security set to signed macros only for long term usage.
Set Expiry Date when item is added to the Sent items folder
The macro checks the date and if no expiry date is set, asks the user to enter a number then sets the expiration date that number of months in the future.
Because this checks messages when they are added to the Sent Items folder, it catches all messages, including those created using Send to commands in other applications.
Dim WithEvents sentMsg As Items Private Sub Application_Startup() Dim NS As Outlook.NameSpace Set NS = Application.GetNamespace("MAPI") Set sentMsg = NS.GetDefaultFolder(olFolderSentMail).Items Set NS = Nothing End Sub Private Sub sentMsg_ItemAdd(ByVal Item As Object) ExpiryTime = Item.ExpiryTime If ExpiryTime = #1/1/4501# Then Dim Number As Integer Number = InputBox("Enter number of months before message expires") ' Can delete this line, if desired MsgBox "Message will expire on: " & DateAdd("m", Number, Now) Item.ExpiryTime = DateAdd("m", Number, Now) End If Item.Save End Sub
If you want to set a specific of time before the message expires, replace the code block between 'If ExpiryTime....' and 'Item.Save' in the macro above with the following code.
Change the 1 in this line: Item.ExpiryTime = DateAdd("m", 1, Date) to the desired number of months.
If ExpiryTime = #1/1/4501# Then MsgBox "You did not set an expiration date. This message will expire in 30 days", vbOKOnly ' "m" specifies months as the interval, 1 is # of months from today Item.ExpiryTime = DateAdd("m", 1, Date) Item.Save
Set ExpiryDate when the Send button is pushed
Note that this only works for messages started in Outlook. It will not check messages created using Send to commands.
Public WithEvents Item As Outlook.MailItem Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean) ExpiryTime = Item.ExpiryTime If ExpiryTime = #1/1/4501# Then Dim Number As Integer Number = InputBox("Enter number of months before message expires") ' Can delete this line MsgBox "Message will expire on: " & DateAdd("m", Number, Now) Item.ExpiryTime = DateAdd("m", Number, Now) End If End Sub
For help with DateAdd functions, see DateAdd Function. Although this page references Access 2007, the information applies to the DateAdd function in all versions of Outlook.
To set an expiration date on all messages in a folder, see E-Mail: Set expiry time