2009-04-24 1 views
7

get_payload로 이상하게 작동 함 : 디코딩중인 메시지에 등호가 표시 될 때 쓰레기처럼 보입니다. 여기에 오류가 표시 코드입니다 :파이썬 : 등호를 치면 이메일 get_payload 디코드가 실패합니까?

import email 

data = file('testmessage.txt').read() 
msg = email.message_from_string(data) 
payload = msg.get_payload(decode=True) 
print payload 

는 그리고 여기 샘플 메시지입니다 : test message은.

메시지는 첫 번째 "="까지만 인쇄됩니다. 나머지는 생략됩니다. 아무도 무슨 일이 일어나고 있는지 아니?

"decode = False"인 동일한 스크립트는 전체 메시지를 반환하므로 디코드가 등호로 불만 인 것처럼 보입니다.

이것은 Python 2.5에 속합니다.

답변

6

줄 끝 문제가 있습니다. 테스트 메시지 본문에 개행하지 않고 캐리지 리턴 (\ r)을 사용합니다 (\ n). 전자 메일을 구문 분석하기 전에 줄 끝을 수정하면 모두 작동합니다.

+0

Thanks Richie, that works. 그러나 텍스트가 아닌 첨부 파일도 처리 할 것이므로 다시 대체를 무차별 적으로 수행하고 싶지 않을 것입니다. 나는 text/plain을 감지 할 필요가있을 것이고, 단지 치환을 할 필요가있을 것이다. 나는 message_from_string 호출을 이미 지나치고있는 메시지 부분에 대한 mime 유형을 볼 때부터 약간 미묘하다. get_payload 호출 외에 별도로 디코딩을 호출 할 수 있습니까? – Parand

+1

진정한 바이너리 첨부 파일을 다루는 것이 확실합니까? 첨부 파일은 일반적으로 base64 또는 유사한 것을 사용하여 전자 메일 내에서 인코딩되므로 이진 파일을 나타내지 만 전자 메일 내의 텍스트로 인코딩됩니다. – RichieHindle

+0

당신은 다시 옳습니다. 괜찮은 숫자의 예제로 테스트 해 보았는데, 여러분이 제시 한 대체 코드로 모두 잘 작동합니다. 다시 한번 감사드립니다. – Parand

관련 문제