Gmailで特定のタイトルのメールをチェックする簡単なスクリプトを作成しようとしています。このプログラムをPython= 3.7.3で実行すると、次のデータを受け取ります:('OK', [b'17'])
。
Pythonでメールの本文にアクセスする必要があります。持っているデータをどうするかわからない。
これが私の現在のコードです:
import imaplib
import credentials
imap_ssl_Host = 'imap.gmail.com'
imap_ssl_port = 993
username = credentials.email
password = credentials.passwd
server = imaplib.IMAP4_SSL(imap_ssl_Host, imap_ssl_port)
server.login(username, password)
server.select('INBOX')
data = server.uid('search',None, '(SUBJECT "MY QUERY HERE!")')
print(data)
コードを実行した結果:
('OK', [b'17'])
少し荒れているのはわかっていますが、まだ学習中なので、改善に役立つアドバイスをいただければ幸いです。
まず、選択したメールボックスの内容を一覧表示し、アイテムの1つを取得する必要があります。あなたはこのようなことをすることができます(@asyntsによって提案されたリンクもチェックしてください)
imap.select('Inbox')
status, data = imap.search(None, 'ALL')
for num in data[0].split():
status, data = imap.fetch(num, '(RFC822)')
email_msg = data[0][1]
本文の特定のフィールドのみが必要な場合は、RFCを解析する代わりに、次のようなフィールドをフィルタリングできます。
status, data = imap.fetch(num, '(BODY[HEADER.FIELDS (SUBJECT DATE FROM TO)])')