使用Python

时间:2016-09-23 13:31:16

标签: python imap gmail-imap imaplib

亲爱的Stack Overflow用户,

我的问题是如何在python中使用imap命令的返回数据(在这种情况下打印收件箱中的消息量)。我在互联网上找到的内容仅限于以下两种描述:

Discription 1

Discription 2

阅读这些解释,我仍然不知道如何使用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

1 个答案:

答案 0 :(得分:0)

select函数返回EXIST响应中的数字。几乎所有imaplib命令都返回两个值typedata

来自documentation

  

每个命令都返回一个元组:(type,[data,...]),其中type是   通常是'OK'或'NO',数据是命令中的文本   响应或命令的强制结果。每个数据都是a   字符串或元组。如果是元组,则第一部分是标题   响应,第二部分包含数据(即:'文字'   值)。

select,在它的数据列表中返回EXISTS响应中的数字,显然是一个字符串。您需要从列表中提取项目,并将其转换为字符串:

typ, dat = inbox.select()
number_of_messages = int(dat[0])