当标题值是由变量而不是字符串给定时,为什么“按标题进行IMAP搜索”会失败?

问题描述 投票:0回答:2

我可以获得具有特定标头值的电子邮件的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返回一个空列表

[b'']

,表示它未能搜索目标电子邮件。

如何给变量提供适当的输入?

python email imap imaplib
2个回答
0
投票

在您的示例中,您正在发送实际的字符串tmp-不会神奇地在字符串内部扩展它。

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

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

这样,您的字符串实际上将是相同的,并且应该可以按预期工作。在编写代码时,您只是在索要消息ID设置为tmp的电子邮件。


0
投票

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

res, tmp = self.mail.uid('search', None, '(HEADER Message-ID %s)' %tmp)
© www.soinside.com 2019 - 2024. All rights reserved.