Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
查找特定电子邮件的主题-imap-python_Python_Imap - Fatal编程技术网

查找特定电子邮件的主题-imap-python

查找特定电子邮件的主题-imap-python,python,imap,Python,Imap,我需要从一个名为-xteam的特定发件人那里找到一封主题为“重置密码”的电子邮件,然后对该邮件执行一些进一步的操作 如果我这样做: imap_host = 'imap.gmail.com' imap_user = 'abc@gmail.com' imap_pass = 'pass113' imap = imaplib.IMAP4_SSL(imap_host) imap.login(imap_user, imap_pass) status, message = imap.se

我需要从一个名为-xteam的特定发件人那里找到一封主题为“重置密码”的电子邮件,然后对该邮件执行一些进一步的操作

如果我这样做:

 imap_host = 'imap.gmail.com'
 imap_user = 'abc@gmail.com'
 imap_pass = 'pass113'

 imap = imaplib.IMAP4_SSL(imap_host)

 imap.login(imap_user, imap_pass)   
 status, message = imap.search(None, '(SUBJECT "Reset Password")')
除xteam外,还有许多其他发件人发送了主题为“重置密码”的电子邮件

然后我试着:

 status, message = imap.search(None, '(FROM "help@xteam.com")')
但xteam已经发送了许多其他不相关的电子邮件

最后:

 status, message = imap.search(None, '(AND (FROM "help@xteam.com") (SUBJECT "Reset Password"))')
这会产生以下错误:

imaplib.IMAP4.error:搜索命令错误:错误[b'无法分析命令']


这是最好的方法。

搜索功能不解码括号内的字符串:它需要多个参数:

status, message = imap.search(None, 'FROM', "help@xteam.com", 'SUBJECT', "Reset Password")
不需要指定,因为它是默认值,所以括号没有意义。
运算符也不需要括号,因为它只需要两个操作数。您不能执行
或tag1 value1 tag2 value2 tag3 value3
,因为这意味着
或tag1 value1 tag2 value2[和]tag3 value3
。而是执行
或tag1值1 tag2值2 tag3值3
。由于只有两个操作数的规则,该操作数被隐式括起来,就好像它是
或(或tag1 value1 tag2 value2)tag3 value3
。这种波兰语表示法使IMAP解析器更易于编写,但代价是使涉及
的复杂查询难以正确执行。以下是搜索键的完整语法:

search      = "SEARCH" [SP "CHARSET" SP astring] 1*(SP search-key)
但是使用
imaplib
可以将编码保留为
None
,以获得默认值。您可以拥有表单的多个搜索键

search-key  = "ALL" / "ANSWERED" / "BCC" SP astring /
              "BEFORE" SP date / "BODY" SP astring /
              "CC" SP astring / "DELETED" / "FLAGGED" /
              "FROM" SP astring / "KEYWORD" SP flag-keyword /
              "NEW" / "OLD" / "ON" SP date / "RECENT" / "SEEN" /
              "SINCE" SP date / "SUBJECT" SP astring /
              "TEXT" SP astring / "TO" SP astring /
              "UNANSWERED" / "UNDELETED" / "UNFLAGGED" /
              "UNKEYWORD" SP flag-keyword / "UNSEEN" /
              "DRAFT" / "HEADER" SP header-fld-name SP astring /
              "LARGER" SP number / "NOT" SP search-key /
              "OR" SP search-key SP search-key /
              "SENTBEFORE" SP date / "SENTON" SP date /
              "SENTSINCE" SP date / "SMALLER" SP number /
              "UID" SP sequence-set / "UNDRAFT" / sequence-set /
              "(" search-key *(SP search-key) ")"

如最后一行所示,可以包含方括号,但它们必须是单独的参数。

搜索功能不解码方括号内的字符串:它需要多个参数:

status, message = imap.search(None, 'FROM', "help@xteam.com", 'SUBJECT', "Reset Password")
不需要指定,因为它是默认值,所以括号没有意义。
运算符也不需要括号,因为它只需要两个操作数。您不能执行
或tag1 value1 tag2 value2 tag3 value3
,因为这意味着
或tag1 value1 tag2 value2[和]tag3 value3
。而是执行
或tag1值1 tag2值2 tag3值3
。由于只有两个操作数的规则,该操作数被隐式括起来,就好像它是
或(或tag1 value1 tag2 value2)tag3 value3
。这种波兰语表示法使IMAP解析器更易于编写,但代价是使涉及
的复杂查询难以正确执行。以下是搜索键的完整语法:

search      = "SEARCH" [SP "CHARSET" SP astring] 1*(SP search-key)
但是使用
imaplib
可以将编码保留为
None
,以获得默认值。您可以拥有表单的多个搜索键

search-key  = "ALL" / "ANSWERED" / "BCC" SP astring /
              "BEFORE" SP date / "BODY" SP astring /
              "CC" SP astring / "DELETED" / "FLAGGED" /
              "FROM" SP astring / "KEYWORD" SP flag-keyword /
              "NEW" / "OLD" / "ON" SP date / "RECENT" / "SEEN" /
              "SINCE" SP date / "SUBJECT" SP astring /
              "TEXT" SP astring / "TO" SP astring /
              "UNANSWERED" / "UNDELETED" / "UNFLAGGED" /
              "UNKEYWORD" SP flag-keyword / "UNSEEN" /
              "DRAFT" / "HEADER" SP header-fld-name SP astring /
              "LARGER" SP number / "NOT" SP search-key /
              "OR" SP search-key SP search-key /
              "SENTBEFORE" SP date / "SENTON" SP date /
              "SENTSINCE" SP date / "SMALLER" SP number /
              "UID" SP sequence-set / "UNDRAFT" / sequence-set /
              "(" search-key *(SP search-key) ")"

如最后一行所示,您可以包括括号,但它们必须是单独的参数。

并且是默认值。没有关键字,这是默认值<代码>状态,消息=imap.search(无,'FROM'help@xteam.com“主题”重置密码“)
应该可以工作。如果没有,请感谢@arnt的帮助,这是默认设置。没有关键字,这是默认值<代码>状态,消息=imap.search(无,'FROM'help@xteam.com“主题”重置密码“)
应该可以工作。如果没有,谢谢@arnt的帮助