とほほのPython入門 - IMAP(imapclient)

目次

imapclient とは

インストール

# 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([...]) には下記などの検索条件を指定します。

APIリファレンス

上記はサーバー上のメールの一覧を取得するサンプルですが、その他の API については下記のドキュメントを参照してください。