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

2024-04-16 08:35:58 发布

您现在位置: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')

当我将收件箱替换为“全部”或“已发送”时,会收到: 命令搜索在状态身份验证中非法,仅在选定的状态中允许


Tags: idssearch状态邮件msgconnselectutf
3条回答

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

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

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

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

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

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

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.

相关问题 更多 >