【问题标题】:IMAP search for email address in the from fieldIMAP 在 from 字段中搜索电子邮件地址
【发布时间】:2011-08-18 03:56:46
【问题描述】:

我正在尝试使用 python 的 imaplib 搜索和过滤我的 imap 邮件。我在搜索命令中遇到了一个非常奇怪的问题,在 FROM 字段中搜索电子邮件地址。我有以下脚本,

print('search with name')
status, results = con.search(None, '(FROM "Shrikant Sharat")')
if status == 'OK':
    if results[0]:
        mid = results[0].split()[0]
        print('mail id', mid)
        print(con.fetch(mid, '(UID BODY[HEADER.FIELDS (FROM)])'))
    else:
        print('No results yielded')
else:
    print('unable to search', results)

print()
print('search with email')
status, results = con.search(None, '(FROM "shrikantsharat.k@gmail.com")')
if status == 'OK':
    if results[0]:
        mid = results[0].split()[0]
        print('mail id', mid)
        print(con.fetch(mid, '(UID BODY[HEADER.FIELDS (FROM)])'))
    else:
        print('No results yielded')
else:
    print('unable to search', results)

为此,我得到以下结果,

search with name
mail id 2155
('OK', [('2155 (UID 5340 BODY[HEADER.FIELDS (FROM)] {54}', 'From: Shrikant Sharat <shrikantsharat.k@gmail.com>\r\n\r\n'), ' FLAGS (\\Seen))'])

search with email
No results yielded

为什么第二次搜索失败?如先前搜索所示,电子邮件地址出现在 From 字段中。第二次搜索应该匹配到这封邮件吧?

这不是在From 字段中搜索电子邮件地址的方法吗?我在这个上把头发拉开。有什么想法吗?

编辑如果相关,我正在尝试使用 MS Exchange 公开的 IMAP 服务器(我认为是 2007 年)。

【问题讨论】:

  • 我已经测试了您的代码,它适用于我本地的 Cyrus imapd 以及 Gmail。适用于 (FROM "user@domain.com")(FROM user@domain.com) 语法。您访问的是什么品牌的 imap 服务器?
  • @samplebias,这是来自 MS Exchange 服务器的 IMAP 服务器。 编辑:使用 ssl
  • 嗯,我不知何故认为它会是 Exchange(不幸的是我无法访问)。如果您碰巧有一个 IMAP 客户端,可以在其中进行搜索(松树等),或许可以窥探并比较发出的协议命令?
  • @simplebias,我没有 pine,但我已将 mutt 和 Thunderbird 配置为连接到此 IMAP 服务器。你是在建议我窥探使用wireshark或其他东西发送的数据包吗?

标签: python imap exchange-server imaplib


【解决方案1】:

使用它作为您的过滤器:

(HEADER FROM "shrikantsharat.k@gmail.com")

【讨论】:

    猜你喜欢
    • 2011-04-15
    • 2014-07-08
    • 2012-05-20
    • 1970-01-01
    • 2016-06-17
    • 2023-04-07
    • 1970-01-01
    • 2022-12-28
    • 1970-01-01
    相关资源
    最近更新 更多