【问题标题】:Find messages by sender IMAP.search()按发件人 IMAP.search() 查找邮件
【发布时间】:2019-11-21 00:03:19
【问题描述】:

我使用 imaplib 库来处理电子邮件。我想查找一个人的所有电子邮件。下一个代码不适用于所有消息:

    typ, data = con.search(None, 'FROM "name.surname@testmail.com"')

有时我需要设置这样的东西来查找消息:

    typ, data = con.search(None, 'FROM "Surname, Name"')

我无法通过电子邮件找到消息。如果我理解正确,它仅适用于 html 格式的消息。

    print(message['From'])
    print(type(message['From']))

接下来将打印该代码:

    "Surname, Name" <name.surname@testmail.com>
    <class 'str'>

为什么搜索功能不会在这个字符串中搜索所有可能的提及?它不像普通的字符串搜索那样工作吗?如果我想查找电子邮件为“@testmail.com”的所有邮件,而不是来自特定人的邮件,我应该如何搜索?

【问题讨论】:

  • 第一个搜索搜索 From 字段包含子字符串 name.surname@testmail.com 的邮件,不多也不少。这个问题似乎没有明确说明,应该澄清或结束。您的消息是否包含该字符串?
  • 是的。我的收件箱\TestFolder 中只有一条消息。它来自“name.surname@testmail.com”。 search(None, 'FROM "name.surname@testmail.com"') 什么也不返回, search(None, 'FROM "Surname, Name"') 返回该消息。很奇怪,这就是为什么我在stackoverflow上问了一个问题,我在google上没有找到任何关于我的奇怪案例的信息。
  • 看来,搜索功能仅在第一部分(在双引号之间)搜索子字符串,而忽略了带有电子邮件地址的字符串的其他部分。即使按一个昏迷搜索,我也能找到我的消息:con.search(None, 'FROM ","')。也许,问题出在那个引号上?
  • 注意:搜索是由你的服务器实现的,而不是由客户端实现的;如果搜索有问题,那是因为您的服务器错误地实现了它。您使用的是什么服务器实现?
  • 正确的引号字符是".

标签: python email search imap imaplib


【解决方案1】:

我在这里找到了答案:IMAP search for email address in the from field

只需将 next 用作过滤器:

(HEADER FROM "name.surname@testmail.com")

【讨论】:

    猜你喜欢
    • 2019-11-11
    • 2014-02-20
    • 2012-12-16
    • 2013-11-24
    • 2017-07-21
    • 2013-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多