とほほのPython入門 - IMAP(imapclient)
目次
imapclient とは
- Python で IMAP を用いてメールを受信するライブラリです。
インストール
# pip install imapclient
使用例
例えば Gmail からメールを読み込むには下記のプログラムを実行します。YOUR_EMAIL_ADDRESS には xxxx@gmail.com などの Gmail アドレスを、YOUR_APP_PASSWORD にはアプリパスワードを指定します。アプリパスワードを発行するには Googleアカウント管理画面 の [セキュリティ] で [2段階認証プロセス] を有効にし、アプリパスワード画面 でアプリパスワードを新規発行してください。
import imapclient
import ssl
import email
from email.header import decode_header
# SSL接続
context = ssl.create_default_context()
server = imapclient.IMAPClient('imap.gmail.com', ssl=True, ssl_context=context)
server.login('YOUR_EMAIL_ADDRESS', 'YOUR_APP_PASSWORD')
# INBOXを選択
server.select_folder('INBOX', readonly=True)
# 未読メールを検索
uids = server.search(['ALL'])
# メールの内容を表示
for uid in uids:
raw_message = server.fetch(uid, ['BODY[]'])[uid][b'BODY[]']
msg = email.message_from_bytes(raw_message)
# 件名と本文を表示
subject, encoding = decode_header(msg['Subject'])[0]
if isinstance(subject, bytes):
subject = subject.decode(encoding or 'utf-8')
print("------")
print(f"件名: {subject}")
print(f"送信者: {msg['From']}")
search([...]) には下記などの検索条件を指定します。
['ALL']:すべてのメール['UNSEEN']:未読メール['SEEN']:既読メール['SINCE', '01-Jan-2025']:2025/01/01 以降のメール['SUBJECT', '【重要】']:件名に【重要】を含むメール
APIリファレンス
上記はサーバー上のメールの一覧を取得するサンプルですが、その他の API については下記のドキュメントを参照してください。
Copyright (C) 2025 杜甫々
https://www.tohoho-web.com/python/imapclient.html