【Python3】IMAPメールを受信する

IMAPメールを条件をしぼって受信して、メール件名と受信日時を確認できるようにしました。認証はSTARTTLSのユーザーパスワード認証です。

  1. 下記のpythonファイルを作成します。
import imaplib
import ssl
import email
from email.mport decode_heke_header


host = "IMAPメールサーバー"
username = "名前"
password = "パスワード"

context = ssl.create_default_context()
imapclient = imaplib.IMAP4(host, 143)
imapclient.starttls(ssl_context=context)

imapclient.login(username, password)

imapclient.select() # デフォでINBOXメールボックスを選択
# もしメールボックスをリストさせたい場合は、print(imapclient.list())で確認可能

search_option = '(SUBJECT "テスト" FROM "darekasan@tekitou.jp" )'
# メール件名 AND 送信元アドレスでフィルター

typ, data = imapclient.search(None, search_option)
datas = data[0].split()
fetch_num = 10 #確認したいメール件数

if (len(datas)-fetch_num) < 0:
    fetch_num = len(datas)

msg_list = []

for num in datas[len(datch_num::]:
     typ,data = imapclient.fetch(num, '(RFC822)')
     msg = email.message_from_bytes(data[0][1])
     msg_list.append(msg)

imapclient.close()
imapclient.logout()


for msg in msg_list:
     subject = str(make_header(decode_header(msg["Subject"])))
     date = str(make_header(decode_header(msg["Date"])))
     print(subject)
     print(date)

2. ターミナルから上記pyファイルを実行

python [上記ファイル名].py

これで、メール件名と受信日時がターミナルに表示されたと思います。以上です。

python実行用に仮想環境を作りたい、GitHubでコード管理したい人は下記も参考になれば、嬉しいです。