I cannot search sent emails in Gmail with Python

僤鯓⒐⒋嵵緔 提交于 2019-11-29 01:34:58

问题


I am trying to search for messages in the Sent (actually i care for both) but I only get incoming messages. For the time being i have

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

Which gives equivalent results with this

imap_conn.select('INBOX')

When I replace INBOX with ALL or SENT I get: command SEARCH illegal in state AUTH, only allowed in states SELECTED


回答1:


Man, the error message is so misleading. What it's really saying is that you have tried to select an invalid folder name hence the search operation fails.

To verify/check the current valid folders/labels do something like:

Using 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())

Using imaplib

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

After I could see what folder names it was expecting, all was well.




回答2:


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.



回答3:


You need to use: imap_conn.select('[Gmail]/Sent Mail')

Just wanted to point this out for future users who see this. It's hidden in the comments.




回答4:


Make sure you use the extra quotes in your string:

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

That worked for me.




回答5:


Need to use print imap_conn.list(). Tags are language based. for example in spanish is [Gmail]/Todos



来源:https://stackoverflow.com/questions/3267234/i-cannot-search-sent-emails-in-gmail-with-python

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!