我正在尝试使用 Python IMAP 库将电子邮件设置为已读。就像在这个例子中一样: Python、IMAP 和 GMail。将消息标记为已查看
我选择一个 GMail 帐户的“所有电子邮件”文件夹,然后通过搜索命令获取特定电子邮件的 UID。然后我使用该 UID 尝试将其标记为已读,但失败了。
result, data = mail.uid('fetch', email_uid, '(FLAGS)')
print "RESULT: ",result,data
mail.select(folder_name, readonly=False)
result, data = mail.store(email_uid, '+FLAGS', '\\Seen')
print "RESULT OF OPERATION FOR UID",email_uid,result,data
无论我运行这段代码多少次,我总是获得不包含 \Seen 标志的标志。
示例执行(忽略 Django 打印):
FINAL QUERY: (SENTSINCE 07-Mar-2013 SENTBEFORE 11-Mar-2013 LARGER 7508 SMALLER 7510)
RESULT: OK ['31424 (UID 54264 FLAGS (NotJunk $NotJunk))']
RESULT OF OPERATION FOR UID 54264 OK [None]
[09/Mar/2013 17:30:37] "GET /api/mark_as_read/320/?token=8e3c057b841b75c864685786b2a9657aadf17e3bfb991b103b7c4b3ffdd2a753&refresh_mode=all&folder_mode=inbox HTTP/1.1" 200 144
FINAL QUERY: (SENTSINCE 07-Mar-2013 SENTBEFORE 11-Mar-2013 LARGER 7508 SMALLER 7510)
RESULT: OK ['31424 (UID 54264 FLAGS (NotJunk $NotJunk))']
RESULT OF OPERATION FOR UID 54264 OK [None]
[09/Mar/2013 17:30:44] "GET /api/mark_as_read/320/?token=8e3c057b841b75c864685786b2a9657aadf17e3bfb991b103b7c4b3ffdd2a753&refresh_mode=all&folder_mode=inbox HTTP/1.1" 200 144
FINAL QUERY: (SENTSINCE 07-Mar-2013 SENTBEFORE 11-Mar-2013 LARGER 7508 SMALLER 7510)
RESULT: OK ['31424 (UID 54264 FLAGS (NotJunk $NotJunk \\Seen))']
RESULT OF OPERATION FOR UID 54264 OK [None]
我尝试了多种变体。我尝试设置标志\Seen,Seen,\Seen,SEEN,带括号,不带括号,并且不知道除此之外我可以尝试什么。
我怀疑这里可能有一些非常具体的细节 - 也许GMail“所有电子邮件”文件夹不允许将电子邮件标记为已读?
我也不知道,在 mail.store 命令返回的 (result,data) 元组中,data 变量是否应该具有“[None]”变量以正常执行,或者它是否意味着某事是错的。
如果我尝试设置像 \\Seen 之类的错误标志,则 mail.store 命令会引发错误。因此,当设置 \Seen 标志时,它是一个有效的 IMAP 标志。
我不知道接下来要尝试什么。
任何帮助都会非常感激。