使用 imaplib 在 Gmail 中搜索
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,但我已经在使用它了,我真的不知道如何解决它。
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")
I'm trying to select only new messages in Gmail, via imap in Python. Problem is, I always get the following error:
imaplib.error: command SEARCH illegal
in state AUTH
I googled it and read that I'd have to use imap4, but I'm already using it I can't really figure out how to solve it.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
问题似乎是没有名为
[Gmail]/Inbox
的邮箱。通过调用m.list()
可以获得所有有效邮箱的列表。我通过使用 Python 的交互式 shell(使用 Python 2.6)发现了这一点,它显示了 IMAP 服务器对每个 IMAP 操作的响应。
注意:使用 Python 交互式 shell 时,导入
pprint
并调用pprint.pprint(m.())
可能是对于一些发回大量信息的 IMAP 命令来说是个好主意。The problem seems to be that there is no mailbox called
[Gmail]/Inbox
. It is possible to get a listing of all valid mailboxes by callingm.list()
.I discovered this by using Python's interactive shell (with Python 2.6), where it shows the response from the IMAP server for each IMAP operation.
Note: When using the Python interactive shell, importing
pprint
and callingpprint.pprint(m.<method of m>(<params>))
would probably be a good idea for some IMAP commands which send back lots of information.另一件事 - imaplib 的 select() 函数默认为您选择 INBOX,看起来更干净。
http://docs.python.org/library/imaplib.html#imaplib .IMAP4.select
One more thing - imaplib's select() function selects INBOX for you by default, seems cleaner.
http://docs.python.org/library/imaplib.html#imaplib.IMAP4.select
对我来说,“[Gmail]”是有问题的:
即将:更改
为:
无论如何,按照上面的建议使用 m.list() 是一个好的开始。
For me, it was having "[Gmail]" that was problematic:
I.e. change this:
to this:
Regardless, using m.list() as the person above suggested is a good start.