2011-05-04 8 views
0

python의 imaplib을 사용하여 imap 메일을 검색하고 필터링하려고합니다. FROM 필드에서 전자 메일 주소를 검색하여 검색 명령에 이상한 문제가 발생했습니다. 나는 다음과 같은 결과 보낸 사람 입력란에서 이메일 주소를 검색합니다.

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 

이유는 두 번째 검색이 실패하는 얻을,

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) 

에 대해 다음 스크립트가? 전자 메일 주소는 이전 검색에서와 같이 From 필드에 있습니다. 두 번째 검색에서이 우편함과 일치해야합니까?

From 필드에서 이메일 주소를 검색하는 방법이 아닙니까? 나는이 머리카락을 머리카락으로 떼어 내고있다. 어떤 아이디어?

편집 관련성이있는 경우 MS Exchange (2007 년형)에 노출 된 IMAP 서버를 사용하고 있습니다.

+1

내가 코드를 테스트했습니다, 그리고 내 로컬 사이러스 imapd가뿐만 아니라 Gmail에 대해 작동합니다. '(FROM "[email protected]")'및 (FROM [email protected]) 구문과 함께 작동합니다. 어떤 브랜드의 imap 서버에 접속하고 있습니까? – samplebias

+0

@samplebias, 이것은 MS Exchange 서버의 IMAP 서버입니다. ** 편집 ** : ssl –

+0

흠, 나는 어떻게 든 그것이 Exchange (불행히도 내가 하나에 액세스 할 필요가 없을 거라 생각). 검색이 작동하는 IMAP 클라이언트 (소나무 등)가있을 경우 발행 된 프로토콜 명령을 스누핑하고 비교할 수 있습니까? – samplebias

답변

6

사용이 필터로 :

(HEADER FROM "[email protected]") 
+0

굉장한 남자! 그거야. 엄청 고마워 :) –

관련 문제