파이썬에서 'imaplib'을 사용하여 Gmail 계정에서 이메일을 가져옵니다. 그러나 첨부 파일의 제목 인 전자 메일의 내용을 알고 싶지만 전체 첨부 파일을 다운로드 할 필요는 없습니다. 기본적으로Python imaplib 전체 첨부 파일을 다운로드하지 않고 Gmail 텍스트를 다운로드하십시오.
,
myGmail = imaplib.IMAP4_SSL(...)
....
(respCode, data) = myGmail.fetch(mailUid, 'RFC822')
때때로 거대하고 불필요한 반환 데이터를 텍스트로 인코딩 된 모든 첨부 파일을 포함한 이메일의 전체 부분을 반환합니다.
저는 인터넷을 통해 검색 한 후 답변을 찾기 위해 stackoverflow를 검색했습니다. 그들 중 상당수가 전자 메일 구조를 결정한 다음 다운로드 할 부분을 식별하려면
myGmail.fetch(mailUid, 'BODYSTRUCTURE')
을 입력하고 언급하십시오.
(rCode, data) = myGmail.fetch(mailUid, 'BODY[0]')
(rCode, data) = myGmail.fetch(mailUid, 'BODY0')
(rCode, data) = myGmail.fetch(mailUid, 'BODY[TEXT]')
을 제외한 모든 : 그리고 나는 또한 which에 내가
BODY[]<> to download the specific body part in Fetch command.
를 사용할 수 있음을 언급하지만 다음과 같이 파이썬은 imaplib 많은 명령을 시도했습니다, IMAP4 프로토콜에 대한 RFC 3501 문서를 읽고 그들이 오류 메시지와 함께 실패의 :
는error: FETCH command error: BAD ['Could not parse command']
그래서 사람이 어떻게 Gmail에 파이썬은 imaplib에서이 명령을 사용하는 방법 말해 줄 수?
그리고 당신의 참조를 위해, 위의 예 이메일에 대한 BODYSTRUCTURE은 다음과 같습니다
(BODY
(
(
(
("TEXT" "PLAIN" ("CHARSET" "us-ascii") NIL NIL "QUOTED-PRINTABLE" 1742 33)
("TEXT" "HTML" ("CHARSET" "us-ascii") NIL NIL "QUOTED-PRINTABLE" 17976 485) "ALTERNATIVE"
)
(
"IMAGE" "JPEG"
("NAME" "image001.jpg") "<[email protected]>" "image001.jpg" "BASE64" 4070
)
"RELATED"
)
("APPLICATION" "PDF" ("NAME" "SAC 2012.pdf") NIL "SAC 2012.pdf" "BASE64" 20638)
"MIXED"
)
)
감사합니다!
코드를 남겨 두지 마십시오 (http://sscce.org) - 문제를 추적하고 재현하기가 어렵습니다. 사용자 이름과 비밀번호를 비워두면 좋지만 그 외에도 모든 것을 붙여 넣을 준비가되어 있어야합니다. – phihag
@JXITC - 이것을 알아 냈습니까? 그렇다면 코드를 공유하십시오 :) –
@ ZacharyBurt 실제로 결국 BODY 구조체를 가져 와서 구문 분석하지 않았습니다. 대신, 나는 모든 콘텐츠 (첨부 파일 포함)를 한 번 다운로드하면됩니다. 신속하고 더러운 솔루션입니다. – JXITC