Yahooメールの迷惑メールがいつも大量になっている私。
定期的にpythonで消したい。
って、言っても迷惑メールに入ってるから削除作業しても、そのままそこにいらっしゃるコードになってしまった。
完全削除はできないため。
なので、どんなメールが迷惑メールに来てるか、リストを見るくらいのコードになってしまった。
収穫は、迷惑メールのフォルダ名は、==Bulk Mail== というのが分かったこと
最初に "IMAP有効" にする
Yahoo!メールでIMAPを有効にするには、アカウントの設定から「IMAP/POP/SMTPアクセス」を選択し、「IMAP」の「有効にする」をクリックして確認します。さらに、「Yahoo! JAPAN公式サービス以外からのアクセスも有効にする」を選択することで、外部アプリやメールクライアントからのアクセスを許可します。これにより、IMAPを介したメールの送受信が可能になります。
参考
https://support.yahoo-net.jp/PccMail/s/article/H000007321
迷惑メールのフォルダ名は、Bulk Mail
それを踏まえて、Pythonコード
ログ出力と結果表示の機能を含むPythonスクリプト
import imaplib
import email
# 接続設定
imap_url = 'imap.mail.yahoo.co.jp'
username = 'your_username@yahoo.co.jp' # 実際のユーザー名に置き換えてください
password = 'your_password' # 実際のパスワードに置き換えてください
# IMAPサーバーに接続
mail = imaplib.IMAP4_SSL(imap_url)
mail.login(username, password)
# 迷惑メールフォルダを選択
mail.select('"Bulk Mail"') # フォルダ名が異なる場合は適宜修正してください
# フォルダ内のすべてのメールを検索
status, messages = mail.search(None, 'ALL')
if status == 'OK':
messages_to_delete = messages[0].split()
print(f"Found {len(messages_to_delete)} messages to delete.")
# メッセージリストを反転して最新のメールから処理
for num in messages_to_delete[::-1]:
_, msg_data = mail.fetch(num, '(RFC822)')
msg = email.message_from_bytes(msg_data[0][1])
print(f"Deleting: {email.header.make_header(email.header.decode_header(msg['Subject']))}")
# メールを削除
mail.store(num, '+FLAGS', '\\Deleted')
mail.expunge()
print(f"Deleted {len(messages_to_delete)} messages.")
# ログアウト
mail.logout()
このスクリプトは、迷惑メールフォルダ内のメールを検索し、見つかったメールの数と各メールの件名を表示した後、それらを削除します。メールを実際に削除する前に件名を表示することで、どのメールが削除されるかを確認することができます。
結果
実際、消せてないけど。既読にはなる。
Found 4 messages to delete.
Deleting: So you installed DeployScript. Now what?
Deleting: 【重要なお知らせ】お試し体験を終了された方へ
Deleting: お試し体験終了をした方へ おすすめ番組のご紹介!
Deleting: OpenWeatherMap Account confirmation
Deleted 4 messages.
まあ、迷惑メールの中身が分かったということで。嬉しくもないけど。
勝手に消えるし、まあいいか。