使用 imaplib 在 Gmail 中搜索

发布于 2024-10-19 19:53:03 字数 481 浏览 4 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

〗斷ホ乔殘χμё〖 2024-10-26 19:53:03

问题似乎是没有名为 [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 calling m.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 calling pprint.pprint(m.<method of m>(<params>)) would probably be a good idea for some IMAP commands which send back lots of information.

坚持沉默 2024-10-26 19:53:03

另一件事 - 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

与往事干杯 2024-10-26 19:53:03
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"')
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"')
居里长安 2024-10-26 19:53:03

对我来说,“[Gmail]”是有问题的:

即将:更改

m.select("[Gmail]/Inbox") 

为:

m.select("Inbox") 

无论如何,按照上面的建议使用 m.list() 是一个好的开始。

For me, it was having "[Gmail]" that was problematic:

I.e. change this:

m.select("[Gmail]/Inbox") 

to this:

m.select("Inbox") 

Regardless, using m.list() as the person above suggested is a good start.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文