2011-05-04 195 views
0

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

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 "[email protected]")') 
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 <[email protected]>\r\n\r\n'), ' FLAGS (\\Seen))']) 

search with email 
No results yielded 

为什么第二次搜索失败?电子邮件地址存在于From字段中,如上一次搜索所示。第二个搜索应该匹配这个邮件的权利?

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

编辑如果相关,我试图通过由MS Exchange(2007,我认为)公开的IMAP服务器。

+1

我测试你的代码,和它的作品对我的本地赛勒斯IMAPD以及Gmail中。同时使用'(FROM“[email protected]”)和'(FROM [email protected])'语法。你访问什么品牌的imap服务器? – samplebias 2011-05-04 02:50:06

+0

@samplebias,这是来自MS Exchange服务器的IMAP服务器。 **编辑**:与ssl – 2011-05-04 02:58:35

+0

嗯,我以某种方式认为它会交换(不幸的是我没有访问一个)。如果你碰巧有一个IMAP客户端在哪里搜索工作(松等),也许窥探和比较发布的协议命令? – samplebias 2011-05-04 03:44:13

回答

6

使用此作为过滤器:

(HEADER FROM "[email protected]ail.com") 
+0

超棒的男人!这样可行。万分感谢 :) – 2011-08-11 06:09:25

相关问题