私はGmailのアカウントに接続するためにpythons imaplibを使用しています。私は上位15のメッセージ(未読または読んで、それは問題ではありません)を取り出し、件名と送信者の名前(またはアドレス)を表示したいだけですが、受信ボックスの内容を表示する方法はわかりません。ここでGmailの受信トレイの件名と送信者の名前を取得するためのpython imaplib
は私のコードは、これまでに(正常に接続)
import imaplib
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login('[email protected]', 'somecrazypassword')
mail.list()
mail.select('inbox')
#need to add some stuff in here
mail.logout()
である私は、これは十分に簡単であるべきと信じて、私はちょうどimaplibライブラリのコマンドで十分に熟知していませんよ。すべてのヘルプは...私はそれぞれのメッセージを反復処理して全体の内容を取得することができジュリアンに
UPDATE おかげで感謝しなければならないことになります。
typ, data = mail.search(None, 'ALL')
for num in data[0].split():
typ, data = mail.fetch(num, '(RFC822)')
print 'Message %s\n%s\n' % (num, data[0][1])
mail.close()
を、私はちょうど対象と希望しています送信者。これらのアイテムのためのimaplibコマンドがありますか、またはテキストのSubject:とSender?という内容についてdata [0] [1]の内容全体を解析する必要がありますか?
UPDATE OKは、作業対象と差出人の部分が、どうやら最初に私の最も古いメッセージを示す降順順序によって行われる反復(1、15)を得ました。これをどうやって変更できますか? ...任意のアイデアを
for i in range(len(data[0])-15, len(data[0])):
print data
それはちょうど私の全15回の反復のためのNone
を与える:私はこれをやってみましたか?私もmail.sort('REVERSE DATE', 'UTF-8', 'ALL')
を試みたが、.sort()関数をサポートしてdoesntのGmailの
UPDATE はそれを行う方法を考え出した:
#....^other code is the same as above except need to import email module
mail.select('inbox')
typ, data = mail.search(None, 'ALL')
ids = data[0]
id_list = ids.split()
#get the most recent email id
latest_email_id = int(id_list[-1])
#iterate through 15 messages in decending order starting with latest_email_id
#the '-1' dictates reverse looping order
for i in range(latest_email_id, latest_email_id-15, -1):
typ, data = mail.fetch(i, '(RFC822)')
for response_part in data:
if isinstance(response_part, tuple):
msg = email.message_from_string(response_part[1])
varSubject = msg['subject']
varFrom = msg['from']
#remove the brackets around the sender email address
varFrom = varFrom.replace('<', '')
varFrom = varFrom.replace('>', '')
#add ellipsis (...) if subject length is greater than 35 characters
if len(varSubject) > 35:
varSubject = varSubject[0:32] + '...'
print '[' + varFrom.split()[-1] + '] ' + varSubject
これは私の最も最近の15のメッセージの件名と送信者を与えます要求通りに順番にアドレスを変更してください!誰も助けてくれてありがとう!
は私のために正常に動作します:http://docs.python.org/library/ imaplib#imap4-example – Julian
はい、そうです。すべてのメッセージの完全なメッセージ内容を取得するために静かに動作します。私はちょうど被験者と送信者のアドレスが必要です。私は、ちょうど1 15 – sadmicrowave
をループし、Pythonドキュメントへの別のリンクのために作ることができます。http://docs.python.org/library/email.html;) – Julian