IMAPメールを条件をしぼって受信して、メール件名と受信日時を確認できるようにしました。認証はSTARTTLSのユーザーパスワード認証です。
- 下記の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でコード管理したい人は下記も参考になれば、嬉しいです。