如何让python模块imapclient工作或我做错了什么



我正在尝试了解RPi及其GPIO,我遇到了这个小项目 - Gmail LED通知程序。所以我安装了每一个必要的软件包和模块,保存了我的脚本,chmod'd +x,现在我收到这个错误(来自IMAPClient):

File "./mail.py", line 32, in loop
print('%d messages in INBOX' % select_info['EXISTS'])
KeyError: 'EXISTS'

你能帮我运行一下吗?编辑:我的代码(此片段):

def loop():
server = IMAPClient(HOSTNAME, use_uid=True, ssl=True)
server.login(USERNAME, PASSWORD)
if DEBUG:
    print('Logging in as ' + USERNAME)
    select_info = server.select_folder(MAILBOX)
    print('%d messages in INBOX' % select_info['EXISTS'])
folder_status = server.folder_status(MAILBOX, 'UNSEEN')
newmails = int(folder_status['UNSEEN'])
if DEBUG:
    print "You have", newmails, "new emails!"
if newmails > NEWMAIL_OFFSET:
    GPIO.output(GREEN_LED, True)
    GPIO.output(RED_LED, False)
else:
    GPIO.output(GREEN_LED, False)
    GPIO.output(RED_LED, True)
time.sleep(MAIL_CHECK_FREQ)
引用

自文档

select_folder(folder, readonly=False) 设置服务器上的当前文件夹。

将来对搜索和提取等方法的调用将作用于所选文件夹。

返回包含 SELECT 响应的字典。至少 b'EXISTS'、b'FLAGS' 和 b'RECENT' 键是可以保证存在的。一 例:

{b'EXISTS': 3,
 b'FLAGS': (b'Answered', b'Flagged', b'Deleted', ... ),
 b'RECENT': 0,
 b'PERMANENTFLAGS': (b'Answered', b'Flagged', b'Deleted', ... ),
 b'READ-WRITE': True,
 b'UIDNEXT': 11,
 b'UIDVALIDITY': 1239278212}

因此,在select_info中寻址密钥的正确方法是select_info[b'EXISTS']

最新更新