2017-12-15 10 views
0

보낸 사람,받는 사람 및 제목을 가져 오기 위해 .msg 파일을 읽으려고합니다..msg 파일의 특성 읽기.

저는이 스크립트를 기본 파이썬 라이브러리 만 설치할 수 있도록 제 작업장에서 사용하기 위해 전자 메일 모듈을 사용하려고합니다.

파이썬 웹 사이트에서 전자 메일 모듈을 사용하는 몇 가지 예를 발견했습니다. https://docs.python.org/3/library/email.examples.html

페이지 끝 부분에서는 발신자, 수신자 및 수신자를 얻는 방법에 대해 설명합니다. 나는 다음과 같은 코드를 사용하여 시도했다 :

# Import the email modules we'll need 
from email import policy 
from email.parser import BytesParser 

with open('test_email.msg', 'rb') as fp: 
    msg = BytesParser(policy=policy.default).parse(fp) 

# Now the header items can be accessed as a dictionary, and any non-ASCII will 
# be converted to unicode: 
print('To:', msg['to']) 
print('From:', msg['from']) 
print('Subject:', msg['subject']) 

이 출력 결과 :

To: None 
From: None 
Subject: None 

내가 파일 test_email.msg을 확인, 그것은 유효한 이메일입니다. 내가 코드

print(msg) 

의 라인을 추가하면 내가 메모장에서 .msg 파일을 열었을 때

나는 왜곡 된 이메일의 출력이 동일한 얻을.

전자 메일 모듈이 발신자/수신자/제목을 올바르게 찾을 수없는 이유는 누구나 제안 할 수 있습니까?

+1

"유효한 이메일"이 무엇입니까? 인쇄 (또는 메모장에서 여는 경우)는 "왜곡됩니다"는 경우 일반 텍스트 전자 메일 메시지 이외의 것이 있음을 나타냅니다. – larsks

+0

"유효한 이메일"인지 어떻게 확인 했습니까? 이 문맥에서'.msg '는 무엇을 의미합니까? Python의'email' lib는 RFC5322 전자 메일 메시지 (기본적으로 형식에 대한 추가 제약 조건이있는 텍스트 파일)에서만 작동하는 반면, 독점적 인 독점 바이너리 형식을 의미하는 경우가 많습니다. – tripleee

+0

메시지가 "왜곡 된"것으로 보일 수있는 두 가지 방법이 있습니다. 전자 메일 소스를보고 싶지 않다면 전자 메일 원본을 보지 못하고 구조가 표시되고 구조를 파악한 후에도 평신도에게도 이해할 수 있지만 "깨진 메일"이라고 할 수 있습니다. 반면에 메모장에서 사악한 이진 파일을 열고 기본적으로 사람이 읽을 수있는 텍스트의 작은 조각으로 이진 제어 코드 만 보게되면 다른 종류의 "왜곡 된"문자가됩니다. – tripleee

답변

0

당신은 분명 독점적 인 바이너리 형식을 읽으려고합니다. Python email 라이브러리는 이것을 지원하지 않습니다. 전통적인 (기본적으로 텍스트) RFC822/RFC5322 형식 만 처리합니다.

Microsoft의 OLE 형식을 읽으려면 a third-party module 및 일부 patience, 부두 및 운이 필요합니다.

또한 기록을 위해 .msg의 모호하지 않은 정의가 없습니다. Outlook은 파일에이 파일 확장명을 사용하지만 기존 RFC822 파일을 비롯하여 다른 형식의 다른 파일에도 사용됩니다.

(두 번째 링크는 MSDN의 MS-OXMSG 사양에 연결하려고 시도하지만 Microsoft는 과거의 URL을 사용하면 사용할 수없는 일종의 쓸모없는 리소스로 간주하므로 링크가 작동하지 않을 수 있습니다 충분한 사람들이 그것을 클릭하면)