受信して指定時間経過したメールを自動削除[MS Outlook]
今回は、
「受信して指定日時以上経過したメールを削除」
を自動でやらせてみます。
もう少し要求を細かく言うと、
・受信して指定日時が経過したメールを自動で削除(あらかじめ指定した条件に合致したメールのみ)
・わざわざ手動で実行しなくてもよい。
・できるだけメールソフトの起動に負担を掛けない。
こんな感じかな~。
ヤフオクのリマインダーメール や イーバンク銀行のセキュリティーコード発行メール
などには効果的だと思います。
とりあえず、仕分けルールの設定では即時削除はできても「3日以上経過したら」という条件指定ができないみたいなので、
VBAで簡単なスクリプトを作ってみることにしました。
※個別のフォルダに対して 古いアイテムの整理 の設定を行った上で仕分けルールで振り分ける という方法もあります。
ツール → マクロ → Visual Basic Editor と選び、
新しいウィンドウが開いたら 挿入 → 標準モジュール として、以下のコードをコピペして下さい。
'実際には、メールの「期限切れ指定日時」を受信日時から指定時間後に設定し、
'「メールボックス・古いアイテムの整理」が実行された際に期限切れのメールが削除されます。
'なお、期限切れ指定によって削除されたメールは復元できませんので注意。
'以下はメール受信から 3日と4時間50分後 に期限が切れるように指定したサンプルです。
Sub AtDeleteRule(Item As Outlook.MailItem)
'= の後の数字を適当に変えてください
Const DEL_DAYS As Integer = 3 '日
Const DEL_HOURS As Integer = 4 '時
Const DEL_MIN As Integer = 50 '分
Dim objId As String
Dim objMail As Outlook.MailItem
Dim etime As Date
objId = Item.EntryID
Set objMail = Application.Session.GetItemFromID(objId)
etime = objMail.ReceivedTime
etime = DateAdd("d", DEL_DAYS, etime)
etime = DateAdd("h", DEL_HOURS, etime)
etime = DateAdd("n", DEL_MIN, etime)
objMail.ExpiryTime = etime
objMail.Save
Set objMail = Nothing
End Sub
値を適当に変えて上書き保存し、Visual Basic Editorを閉じます。
あとは、このスクリプトを仕分けルールで実行するようにします。
なお、自動削除してほしくないメールが自動で削除されてしまわないように、
仕分けルールの条件指定には注意してください。
また、メールは期限切れになってもすぐに削除されるわけではなく、
「古いアイテムの整理」が行われる際に削除されるので注意。
この辺りの設定も確認してください。
自分自身はVBA初心者なので、知識ある方もそうでない方も自由に改良・改変するなりしてください。
このスクリプトによって何かトラブルが起きても責任は取りませんので、
自己責任で使用してください。