pythonで古いメールだけを削除する

プライベートのメールサーバーにmaddyを使っているのだが、maddyにはゴミ箱の古いメールだけを自動削除する機能がない。 ゴミ箱を一気に空にしてしまってもいいのだが、それだと後から必要になってくるメールも永久に消滅してしまう懸念がある。

本ページでは、maddyに限らず、IMAP越しにゴミ箱の中の古いメールを削除するpythonスクリプトを紹介する。 削除の自動化までしようかと思ったけど、別にそこまでしなくていいやと思ったのでスクリプトの紹介だけ。

HOST USERID PASSWORDは、適宜自分のものに変える。

import imaplib
import datetime
 
date = (datetime.datetime.now() - datetime.timedelta(days=30)).strftime("%d-%b-%Y")
 
with imaplib.IMAP4_SSL("HOST") as cli:
  cli.login("USERID", "PASSWORD")
  cli.select("Trash")
 
  status, result = cli.search(None, f"(BEFORE {date})")
  mails = result[0].split()
 
  for mail in mails:
    cli.store(mail, "+FLAGS", "\\Deleted")
  cli.expunge()

IMAPを扱うimaplibは、pythonの標準ライブラリに含まれている。pythonすごい

  • Last modified: 10 days ago