2012-12-02 4 views
2

저는 Python과 imaplib을 사용하여 이메일 클라이언트를 만들려고합니다.Gmail과 Python 및 imaplib - "모든 메일"에서 검색

현재 내 문제는 : 모든 전자 메일이 들어있는 폴더에서 검색을 수행하고 싶습니다. 일반적으로 "[Gmail]/전체 이메일"이라고합니다.

제 문제는 제 Gmail이 기본적으로 포르투갈어입니다. 따라서, 필자의 경우 "포르투갈어/동등한"[포르투갈어/동등]의 선택 항목이 작동하지만 "[Gmail/전체 이메일]"을 선택하면 작동하지 않습니다.

자연 스럽 게도 국가에 관계없이 모든 Gmail 계정의 내 "모든 메일"폴더에 액세스하는 보편적 인 방법이 필요하기 때문에 이것은 문제입니다.

물론 모든 폴더에서 검색을 수행하고 집계 결과를 반환하는 등의 순진한 솔루션을 따라갈 수는 있지만 그 경로를 따라가는 것을 원하지는 않습니다.

이 문제를 해결하는 보편적 인 해결책이 있습니까? 고맙습니다.

답변

4

해결책을 찾았습니다. 편리함을 언급 할 것입니다.

당신은 mail_instance.list()는 같은 폴더의 목록을 얻을 실행하면 :

(\Noselect \HasChildren) "/" "[Gmail]" 
(\HasChildren \HasNoChildren \Trash) "/" "[Gmail]/Caixote do Lixo" 
(\HasNoChildren \Flagged) "/" "[Gmail]/Com estrela" 
(\HasChildren \HasNoChildren \Sent) "/" "[Gmail]/Correio enviado" 
(\HasChildren \HasNoChildren \Important) "/" "[Gmail]/Importante" 
(\HasChildren \HasNoChildren \Drafts) "/" "[Gmail]/Rascunhos" 
(\HasNoChildren \Junk) "/" "[Gmail]/Spam" 
(\HasChildren \HasNoChildren \All) "/" "[Gmail]/Todo o correio" 

을 (이 포르투갈어에)

은 "모든 메일"의 이름은 폴더가 항상 포함 문자열의 태그 "\ All"을 검색하므로 .list()가 반환하는 모든 폴더 이름에서 "\ All"을 검색하면됩니다.

그런 다음 "[Gmail]"색인에서 첫 번째 큰 따옴표의 색인으로 하위 문자열을 추출하면 "모든 메일"폴더 이름을 얻을 수 있습니다.