Skip to main content
 首页 » 编程设计

python之IMAP 在发件人字段中搜索电子邮件地址

2025年05月04日28傻小

我正在尝试使用 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 服务器。

请您参考如下方法:

将其用作您的过滤器:

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