IMAP搜索发件人字段中的电子邮件地址

1 投票
1 回答
6674 浏览
提问于 2025-04-16 16:56

我正在尝试使用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(我想是2007版)提供的IMAP服务器上进行这个操作。

1 个回答

9

把这个当作你的筛选条件:

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

撰写回答