11

我正在尝试在已发送消息中搜索消息(实际上我两者都关心),但我只收到传入消息。暂时我有

imap_conn.select()
str_after = after.strftime('%d-%b-%Y')
typ, msg_ids = imap_conn.search('UTF-8','SINCE',str_after)

这给出了等效的结果

imap_conn.select('INBOX')

当我用 ALL 或 SENT 替换 INBOX 时,我得到:命令 SEARCH 在状态 AUTH 中非法,仅在状态 SELECTED 中允许

4

5 回答 5

24

伙计,错误信息是如此误导。它真正的意思是您试图选择一个无效的文件夹名称,因此搜索操作失败。

要验证/检查当前有效的文件夹/标签,请执行以下操作:

使用 ImapClient

from imapclient import IMAPClient
## Connect, login and select the INBOX
imap_conn = IMAPClient('imap.gmail.com', use_uid=True, ssl=ssl)
imap_conn.login(USERNAME, PASSWORD)

print(imap_conn.list_folders())

使用 imaplib

import imaplib
mail = imaplib.IMAP4_SSL('imap.gmail.com')
mail.login('myusername@gmail.com', 'mypassword')
print(mail.list())

在我看到它所期望的文件夹名称之后,一切都很好。

于 2012-09-25T05:44:41.000 回答
4

您需要使用: imap_conn.select('[Gmail]/Sent Mail')

只是想为看到此内容的未来用户指出这一点。它隐藏在评论中。

于 2011-12-22T21:28:08.037 回答
4
import imaplib
obj = imaplib.IMAP4_SSL('imap.gmail.com',993)
obj.login('userid','password')
obj.select('Sent')  # <-- response like ('OK', ['74']) --> total no. of mail in sent folder
obj.uid('SEARCH',None,'All') # <-- Returns the list of uids of the sent folder.
于 2010-09-27T06:11:00.627 回答
4

确保在字符串中使用额外的引号:

imap_conn.select('"[Gmail]/Sent Mail"')  

这对我有用。

于 2018-06-07T07:29:17.643 回答
0

需要使用打印imap_conn.list()。标签是基于语言的。例如西班牙语是[Gmail]/Todos

于 2016-02-18T09:03:09.910 回答