亲爱的Stack Overflow用户,
我的问题是如何在python中使用imap命令的返回数据(在这种情况下打印收件箱中的消息量)。我在互联网上找到的内容仅限于以下两种描述:
阅读这些解释,我仍然不知道如何使用EXISTS响应,因为我刚刚开始编程(在Uni一个学期的C编程)。 所以,如果有人可以帮助我理解如何在python中使用imap命令的响应,那将是非常棒的。我更愿意理解响应的原则而不是解决这个一次性问题,因此我将能够在不同的情况下使用响应(其他人也可以应用它)。
到目前为止我在Raspberry Pi上编写的(基本)代码,包括我在EXISTS中遇到的问题(在两个问号之间):
import imaplib
server = imaplib.IMAP4_SSL(‘imap.gmail.com’)
server.login(‘USERNAME’, ‘PASSWORD’)
server.list()
server.select(‘inbox’)
print ‘%d messages in the inbox’ %d ??EXISTS??
希望我不是唯一一个想知道这个的人!
亲切的问候,
予。范戴杰
P.S。 我的更新代码如下(错误是:TypeError:并非在字符串格式化过程中转换所有参数):
import imaplib
server = imaplib.IMAP4_SSL('imap.gmail.com')
server.login('USERNAME', 'PASSWORD')
server.list()
server.select('inbox')
number_of_messages = server.select("inbox")
print '%s messages' % number_of_messages
答案 0 :(得分:0)
select函数返回EXIST响应中的数字。几乎所有imaplib命令都返回两个值type
和data
。
每个命令都返回一个元组:(type,[data,...]),其中type是 通常是'OK'或'NO',数据是命令中的文本 响应或命令的强制结果。每个数据都是a 字符串或元组。如果是元组,则第一部分是标题 响应,第二部分包含数据(即:'文字' 值)。
select
,在它的数据列表中返回EXISTS响应中的数字,显然是一个字符串。您需要从列表中提取项目,并将其转换为字符串:
typ, dat = inbox.select()
number_of_messages = int(dat[0])