当 header 值由变量而不是字符串给出时,为什么 'IMAP search by header' 会失败?
Why does an 'IMAP search by header' fail when the header value is given by a variable, not a string?
我可以获得具有特定 header 值的电子邮件的 uid,如下所示:
res, tmp = self.mail.uid('search', None, '(HEADER Message-ID "<123.456.789@localhost>")')
然后,tmp 变为
[b'2993']
但我从文件中获取了 Message-ID 值,将该值存储到变量 (msg_ID) 中,并将 msg_ID 变量作为输入。
当我尝试上面的方法时:
tmp = "<123.456.789@localhost>"
res, tmp = self.mail.uid('search', None, '(HEADER Message-ID tmp)')
tmp returns 一个空列表
[b'']
,表示搜索目标邮箱失败。
如何使用变量给出适当的输入?
在您的示例中,您发送的是实际字符串 tmp
- 它不会在字符串内神奇地展开。
您还缺少字符串周围的其他格式,应添加这些格式以使它们相同:
'(HEADER Message-ID "' + tmp + '")'
这样你的字符串实际上是相同的并且它应该如你所期望的那样工作。在编写代码时,您只是要求发送 Message-ID 字面上设置为 tmp
.
的电子邮件
我也可以使用
来解决这个问题
res, tmp = self.mail.uid('search', None, '(HEADER Message-ID %s)' %tmp)
我可以获得具有特定 header 值的电子邮件的 uid,如下所示:
res, tmp = self.mail.uid('search', None, '(HEADER Message-ID "<123.456.789@localhost>")')
然后,tmp 变为
[b'2993']
但我从文件中获取了 Message-ID 值,将该值存储到变量 (msg_ID) 中,并将 msg_ID 变量作为输入。
当我尝试上面的方法时:
tmp = "<123.456.789@localhost>"
res, tmp = self.mail.uid('search', None, '(HEADER Message-ID tmp)')
tmp returns 一个空列表
[b'']
,表示搜索目标邮箱失败。
如何使用变量给出适当的输入?
在您的示例中,您发送的是实际字符串 tmp
- 它不会在字符串内神奇地展开。
您还缺少字符串周围的其他格式,应添加这些格式以使它们相同:
'(HEADER Message-ID "' + tmp + '")'
这样你的字符串实际上是相同的并且它应该如你所期望的那样工作。在编写代码时,您只是要求发送 Message-ID 字面上设置为 tmp
.
我也可以使用
来解决这个问题res, tmp = self.mail.uid('search', None, '(HEADER Message-ID %s)' %tmp)