See whether setting an expiry works better for you.
First manually set up conditional formatting on Expired Mail so it goes red.
Sub expire_onehour(newMsg As mailItem)
Debug.Print newMsg.ExpiryTime
Debug.Print newMsg.ReceivedTime
If newMsg.ExpiryTime = "4501-01-01 " Then
newMsg.ExpiryTime = DateAdd("h", 1, newMsg.ReceivedTime)
newMsg.Save
Else
' Expiry already set by sender. You may wish to handle this mail some other way.
' newMsg.Display
End If
End Sub
When completed, mark it and remove the expiry date so it no longer displays red
Private Sub Exp_Delete()
Dim myMailitem As Outlook.mailItem
Dim newExptime As Date
Dim addDays As Long
If TypeOf Application.ActiveWindow Is Outlook.Explorer Then
For Each myMailitem In ActiveExplorer.Selection
myMailitem.ExpiryTime = "4501-01-01"
myMailitem.Save
Next myMailitem
Else
Set myMailitem = Application.ActiveInspector.currentItem
myMailitem.ExpiryTime = "4501-01-01"
myMailitem.Save
End If
End Sub
Test with this.
Private Sub expire_onehour_test()
Dim newMsg As mailItem
Select Case TypeName(Application.ActiveWindow)
Case "Inspector"
Set newMsg = Application.ActiveInspector.currentItem
expire_onehour newMsg
Case "Explorer"
Set newMsg = Application.ActiveExplorer.Selection.Item(1)
expire_onehour newMsg
Case Else
' anything else will result in an error
MsgBox "Invalid item."
End Select
End Sub