gpt4 book ai didi

python imaplib 获取 gmail 收件箱主题标题和发件人姓名

转载 作者:IT老高 更新时间:2023-10-28 20:47:07 25 4
gpt4 key购买 nike

我正在使用 pythons imaplib 连接到我的 gmail 帐户。我想检索前 15 条消息(未读或已读,没关系),只显示主题和发件人姓名(或地址),但不知道如何显示收件箱的内容。

这是我目前的代码(连接成功)

import imaplib

mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login('mygmail@gmail.com', 'somecrazypassword')
mail.list()
mail.select('inbox')

#need to add some stuff in here

mail.logout()

我相信这应该足够简单,我只是对 imaplib 库的命令不够熟悉。任何帮助将不胜感激...

更新感谢 Julian,我可以遍历每条消息并检索全部内容:

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 命令,或者我是否必须解析 data[0][1] 的全部内容以获取文本:主题和发件人?

更新好的,让主题和发件人部分工作,但迭代 (1, 15) 是按 desc 顺序完成的,显然首先向我显示最旧的消息。我怎样才能改变这个?我试过这样做:

for i in range( len(data[0])-15, len(data[0]) ):
print data

但这只是给了我所有 15 次迭代的 None ......有什么想法吗?我也试过 mail.sort('REVERSE DATE', 'UTF-8', 'ALL') 但 gmail 不支持 .sort() 函数

更新想出了一个办法:

#....^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 条消息主题和发件人地址,按要求按降序排列!感谢所有帮助过的人!

最佳答案

    c.select('INBOX', readonly=True)

for i in range(1, 30):
typ, msg_data = c.fetch(str(i), '(RFC822)')
for response_part in msg_data:
if isinstance(response_part, tuple):
msg = email.message_from_string(response_part[1])
for header in [ 'subject', 'to', 'from' ]:
print '%-8s: %s' % (header.upper(), msg[header])

这应该让您了解如何检索主题以及从何处检索主题?

关于python imaplib 获取 gmail 收件箱主题标题和发件人姓名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7314942/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com