【发布时间】:2019-10-21 03:43:56
【问题描述】:
我需要在某人的 Gmail 帐户中搜索特定短语“foo bar”。如果我在没有双引号的情况下搜索 foo bar,我会收到超过 125,000 封电子邮件,当我使用双引号(从浏览器)搜索时,我会收到 180 封我正在寻找的相关电子邮件。但是,imaplib 的搜索方法不允许我使用双引号。对此我有什么办法吗?
这是我已经尝试过的:
import imaplib
mail = imaplib.IMAP4_SSL(SMTP_SERVER)
mail.login(USERNAME,PASSWORD)
mail.select(mail_box)
Type, data = mail.search(None, ('Since 01-Jan-2016'), ('BODY "foo bar"'))
^^ 有效,但返回 >125,000 封电子邮件,大部分无关紧要 - 包含 foo 和 bar 的任何内容
Type, data = mail.search(None, ('Since 01-Jan-2016'), ('BODY ""foo bar""'))
Type, data = mail.search(None, ('Since 01-Jan-2016'), ('BODY "\"foo bar\""'))
Type, data = mail.search(None, ('Since 01-Jan-2016'), ('BODY """foo bar"""'))
^^^ 以上都抛出以下错误:“error: SEARCH command error: BAD [b'Could not parse command']”
任何想法都将不胜感激。
【问题讨论】:
-
\" 应该可以工作。来自原始 openssl s_client:
<<< b UID SEARCH BODY "\"foo bar\"" >>> * SEARCH >>> b OK SEARCH completed (Success) -
@Max 我不熟悉openssl s_client,你能扩展一下吗?
-
openssl s_client -connect server:port -crlf基本上只是启用了 SSL/TLS 的 telnet。例如:openssl s_client -connect imap.gmail.com:993 -crlf
标签: python search gmail imaplib