1
import sys, imaplib
    from email.parser import HeaderParser

mail = imaplib.IMAP4_SSL(SERVER, PORT)
status, data = mail.search(None, 'ALL')

for msg_id in data[0].split():
  status, message = mail.fetch(msg_id, '(RFC822)')
  print message[0][1]

mail.close()
mail.logout()

imap経由でgmailからメールを取得しようとしています。メッセージからヘッダー (件名、送信者、日付) を抽出できないことを除いて、すべて正常に動作します。上記のコードでは、message[0][1] に私のメールが含まれています。

ヘッダーを取得できる唯一の方法は、特にヘッダーについて、imap サーバーに再度問い合わせることです。

status, message = mail.fetch(msg_id, '(BODY[HEADER.FIELDS (SUBJECT FROM)])')
parser = HeaderParser()
header = parser.parsestr(message[0][1])
print header

誰かがそれを行う方法を教えてもらえますか?

4

1 に答える 1

10

メッセージ本文だけでなく、メール全体を受け取っていると思います。

raw_message = """From: Santa Claus <santa@aintreal.no>
To: Some Dude <some@du.de>
Subject: I have lost your presents.

Dude, i am so sorry.
"""

import email
msg = email.message_from_string(raw_message)
print(msg['Subject'])  # "I have lost your presents."

msgemail.message.Messageオブジェクトです。

于 2013-02-08T13:42:56.480 に答える