使用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,但我已经在用这个了,实在搞不清楚该怎么解决这个问题。
4 个回答
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,尤其是当我们刚开始学习编程的时候。为了帮助大家更好地理解这些问题,下面的内容将会用简单的语言来解释。
首先,很多时候我们需要使用一些代码块来实现特定的功能。这些代码块就像是我们在做菜时需要的食材,只有把它们组合在一起,才能做出美味的菜肴。
在编程的过程中,我们可能会遇到错误或者不明白的地方。这时候,我们可以去网上寻找答案,比如在StackOverflow这样的论坛上。这里有很多经验丰富的程序员,他们会分享自己的解决方案和经验,帮助我们解决问题。
总之,编程就像是一个不断学习和解决问题的过程。遇到困难时,不要气馁,去寻找帮助,慢慢你就会掌握这些技能。
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"')
还有一点要说的是,imaplib的select()函数默认会为你选择收件箱,这样看起来更简洁。
http://docs.python.org/library/imaplib.html#imaplib.IMAP4.select
问题似乎是没有一个叫做 [Gmail]/Inbox
的邮箱。你可以通过调用 m.list()
来获取所有有效邮箱的列表。
我是在使用 Python 的交互式命令行(Python 2.6 版本)时发现这个问题的,那个环境会显示每个 IMAP 操作从服务器返回的响应。
注意:在使用 Python 的交互式命令行时,导入 pprint
模块并调用 pprint.pprint(m.<方法>(<参数>))
,对于一些返回大量信息的 IMAP 命令来说,可能是个不错的主意。