繁体   English   中英

我无法使用Python在Gmail中搜索已发送的电子邮件

[英]I cannot search sent emails in Gmail with Python

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

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状态下

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

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

使用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())

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

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.

您需要使用:imap_conn.select('[Gmail] /已发邮件')

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

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

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

这对我有用。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM