import imaplib
user = raw_input("Enter your GMail username:")
pwd = getpass.getpass("Enter your password: ")
m = imaplib.IMAP4_SSL("imap.gmail.com")
m.login(user,pwd)
m.select("[Gmail]/Inbox") # here you a can choose a mail box like INBOX instead
m.search("NEW")
我正在尝试通过Python中的imap在Gmail中仅选择新邮件。问题是,我总是得到以下错误:
imaplib.error:命令SEARCH非法 在州AUTH
我用谷歌搜索并读到我必须使用imap4,但我已经在使用它我无法弄清楚如何解决它。
答案 0 :(得分:4)
问题似乎是没有名为[Gmail]/Inbox
的邮箱。可以通过调用m.list()
来获取所有有效邮箱的列表。
我通过使用Python的交互式shell(使用Python 2.6)发现了这一点,它显示了IMAP服务器对每个IMAP操作的响应。
注意:使用Python交互式shell时,导入pprint
并调用pprint.pprint(m.<method of m>(<params>))
对于发回大量信息的某些IMAP命令可能是一个好主意。
答案 1 :(得分:1)
还有一件事 - imaplib的select()函数默认选择INBOX,看起来更干净。
http://docs.python.org/library/imaplib.html#imaplib.IMAP4.select
答案 2 :(得分:1)
import imaplib
obj = imaplib.IMAP4_SSL('imap.gmail.com', 993)
obj.login('username', 'password')
obj.select('**label name**') <-- the label in which u want to search message
obj.search(None, 'FROM', '"LDJ"')
答案 3 :(得分:0)
对我而言,“[Gmail]”存在问题:
即。改变这个:
m.select("[Gmail]/Inbox")
到此:
m.select("Inbox")
无论如何,使用m.list()作为上面提到的人是一个好的开始。