2017-01-08 3 views
0

私はすでにPython 2.7のimapライブラリを使用しているUIDを持つ単一の電子メールの件名を印刷したいと考えています。これはかなりシンプルですが、私はPythonを初めて使い、ライブラリを使用するのに問題があります。uidを使って1つの電子メールの件名を印刷するには

は、ここで私が持っているものです:今

# Retrieve and store ID & UID for most recent email received 

result, data = mail.search(None,'ALL') # search and return sequential ids 
latest_id = data[0].split()[-1] 

result, data = mail.uid('search', None, "ALL") # search and return uids instead 
latest_uid = data[0].split()[-1] 

私はちょうどlatest_uidで識別される電子メールの件名を印刷していますよ。

ありがとうございました!

答えて

1

件名を取得する方法は、RFC 822(電子メールメッセージ標準形式)を使用してメッセージデータ全体を取得し、電子メールモジュールを使用してpython電子メールオブジェクトに変換することです。

RFC 822を使用するとメッセージ全体がフェッチされますが、件名だけが必要な場合は、ヘッダーをフェッチするだけです(下にコメントアウトしてください)。ヘッダーのみを取得する場合は、Subject:で始まる行を解析してください。

imaplibのドキュメントhttps://pymotw.com/2/imaplib/には、以下のコードで何が起こっているのかが詳しく書かれています。

import email, imaplib 

# typ, msg_data = c.fetch('1', '(BODY.PEEK[HEADER])') 
t, d = mail.fetch(latest_uid, '(RFC822)') 


for res_part in d: 
    if isinstance(res_part, tuple): 
    msg = email.message_from_string(res_part[1]) 
    subject = msg['subject'] 
+0

驚くばかり!完璧に動作します。ありがとう! – McFizz

関連する問題