0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python : Yahoo迷惑メールを取り扱う

Posted at

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

参考
https://answers.microsoft.com/en-us/outlook_com/forum/all/yahoo-imap-spam-folder-not-recognized-by-outlook/f002d53b-4124-4237-b9cd-4f02dca7d542


それを踏まえて、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.

まあ、迷惑メールの中身が分かったということで。嬉しくもないけど。

勝手に消えるし、まあいいか。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?