我有一个邮箱,我需要从python中读取传入的邮件。邮件服务器支持IMAP访问,因此,我尝试使用python内置模块imaplib
。
我的代码:
import imaplib
def ReadLatest():
m = imaplib.IMAP4_SSL(<server>)
m.login(<login>, <password>) # ('OK', ['LOGIN Completed.'])
if result != 'OK':
raise Exception("Error connecting to mailbox: {}".format(data))
result, data = m.select("inbox") # ('OK', ['N']) N - count inbox
if result != 'OK':
raise Exception("Error reading inbox: {}".format(data))
if data == ['0']:
return None
#result, data = m.search(None, "ALL") # ('OK', ['1 2']) - numbers of mails
#m.sort('REVERSE DATE', 'UTF-8', 'ALL') # <-- ERROR!
latest = data[0].split()[-1]
result, data = m.fetch(latest, "(RFC822)")
if result != 'OK':
raise Exception("Error reading email: {}".format(data))
<...>
# further e-mail processing
所以,我的问题在于:当我执行上面的代码时,如果同时收到最近的邮件,则不会读取最新的电子邮件。我通过网络界面查看它
当我按日期排序时出现错误:{error}SORT command error: BAD ['Command syntax error, sc=...']
。它不是gmail邮箱,我知道它不支持sort
命令。我不知道我的邮箱是否支持它并且不知道如何检查它。