web-dev-qa-db-ja.com

Python

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'])

少し荒れているのはわかっていますが、まだ学習中なので、改善に役立つアドバイスをいただければ幸いです。

2
Python Project

まず、選択したメールボックスの内容を一覧表示し、アイテムの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)])')
2
Josep Valls