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
More Information
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
I found your blog post while searching explanation for a similar problem: I want to check if an email will be sent in future (date/time chosen by user). Therefore I check the property DeferredDeliveryTime property of the email.
What I don't understand is that Outlook always returns me 1/1/4501 . Do you know where does this come from? Does this apply to Outlook versions prior 2010 too?
If a deferred time is not set, it defaults to the 'none' time of 1/1/4501. Outlook has always used this number to represent no date set, so it would apply to older versions as well.
Morning! I am having a real problem with all my diary entries to collegues having an expiry line through the email almost within a day of sending it ... how to I make my OUtlook settings have NO EXPIRY date at all on ALL diary entries and all email messages. I can see on email messages the Options lets me "untick" the expiration date but where can I "untick" it on diary entry. Basically I want to set my default as neither diary entries nor email messages have an expiration line. Thank you.
Go into File, Options, Mail (Outlook 2010/2013) and if the option to expire mail is checked, uncheck it. That controls all item types, not just email. If it's not set, is a rule adding an expire date?