IMAP搜索从字段中的电子邮件地址
问题描述:
我想使用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服务器。
我测试你的代码,和它的作品对我的本地赛勒斯IMAPD以及Gmail中。同时使用'(FROM“[email protected]”)和'(FROM [email protected])'语法。你访问什么品牌的imap服务器? – samplebias 2011-05-04 02:50:06
@samplebias,这是来自MS Exchange服务器的IMAP服务器。 **编辑**:与ssl – 2011-05-04 02:58:35
嗯,我以某种方式认为它会交换(不幸的是我没有访问一个)。如果你碰巧有一个IMAP客户端在哪里搜索工作(松等),也许窥探和比较发布的协议命令? – samplebias 2011-05-04 03:44:13