当标头值由变量而不是字符串给出时,为什么"按标头搜索 IMAP "会失败?



我可以获得一封具有特定标头值的电子邮件的uid,如下所示:

res, tmp = self.mail.uid('search', None, '(HEADER Message-ID "<123.456.789@localhost>")')

然后,tmp变成

[b'2993']

但我从文件中获取消息ID值,将该值存储到变量(msg_ID(中,并将msg_ID变量作为输入。

当我尝试上面的一个喜欢:

tmp = "<123.456.789@localhost>"
res, tmp = self.mail.uid('search', None, '(HEADER Message-ID tmp)')

tmp返回一个空列表

[b'']

,这意味着它无法搜索目标电子邮件。

如何使用变量进行适当的输入?

在您的示例中,您发送的是实际的字符串tmp,它不会神奇地在字符串中展开。

您还缺少字符串周围的其他格式,应该添加这些格式以使它们完全相同:

'(HEADER Message-ID "' + tmp + '")'

这样,你的字符串实际上是相同的,它应该像你期望的那样工作。编写代码时,您只是要求将邮件ID设置为tmp的电子邮件。

我也可以通过使用来解决这个问题

res, tmp = self.mail.uid('search', None, '(HEADER Message-ID %s)' %tmp)

最新更新