我需要在某人的Gmail帐户中搜索特定短语“ foo bar”。如果我搜索不带双引号的foo bar,则会收到> 125,000封电子邮件,当我使用双引号(从浏览器)进行搜索时,会得到我正在寻找的180条相关电子邮件。但是,imaplib的搜索方法不允许我使用双引号。我对此有什么办法?
这是我已经尝试过的:
tk.Label(root,text=k).grid(row=1)
^^可以工作,但是返回> 125,000封电子邮件,大多数不相关-包含foo和bar的任何内容
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"'))
^^^以上所有均引发以下错误:“错误:SEARCH命令错误:错误[b'无法解析命令']”
任何想法都会受到赞赏。
答案 0 :(得分:0)
这应该有效:
mail.search(None, r'BODY "\"Security Alert\""')
r可以将其转换为原始字符串,因此Python不会解释反斜杠。然后,反斜杠将发送到服务器并正确解释。
您应该能够调整此格式以供使用。
注意:要查看正在发送的内容,请将您的mail.debug临时设置为较高的数字,例如4。这将显示通信量。看到这一点,我发现引号实际上并没有被转义(因为Python将退格视为转义)。
mail.debug = 4
答案 1 :(得分:0)
如上面的Max所建议的,这是可行的:
Select Distinct
ColNr = row_number() over (partition by ContractID Order By TierDesc)
From Yourtable
请注意,如果您使用的是mail.uid()搜索,则还需要将提取调用更新为...
import imaplib
mail = imaplib.IMAP4_SSL(SMTP_SERVER)
mail.login(USERNAME,PASSWORD)
mail.select(mail_box)
Type, data = mail.uid('search', None, ('Since 01-Jan-2016'), 'X-GM-RAW', r'"\"foo bar\""')