IT_잡담2024. 4. 9. 09:12

이메일 파일(eml)에서 보낸 사람, 받는 사람, 제목을 확인하는 방법이다. 영문은 그냥 텍스트 에디터로도 확인이 가능하지만 한글은 인코딩되어 있어서 작업이 좀 필요하다. 찾아보니 파이썬을 이용하면 쉽게 할 수 있구나. 

필요한 모듈은 email 모듈이다. 아래와 같이 예제를 만들 수 있다. my_mail.eml 파일을 읽어서 보낸 사람, 받는 사람, 제목을 출력하는 파이썬 스크립트다. 

 

import email
from email.header import decode_header, make_header

# 파일 열기
f = open("my_mail.eml", "r")

# 이메일 메시지를 읽어서 딕셔너리(dict) 형식으로 변환
eml_msg = email.message_from_file(f)
eml_msg_dict = dict(eml_msg)

# 보낸 사람, 받는 사람 출력
print("From:", eml_msg_dict["From"])
print("To:", eml_msg_dict["To"])

# 제목 디코딩
subject_dec = make_header(decode_header(eml_msg_dict["Subject"]))
print("Subject:", str(subject_dec))

 

제목 디코딩이 조금 복잡한데, decode_header()의 결과는 바이너리값과 인코딩 정보가 리스트(list) 형태로 나온다. 이것을 다시 make_header()를 이용해서 email 모듈에서 사용하는 헤더 오브젝트로 만들어 준 후에 문자열(str) 형식으로 변환하면 화면에 출력했을 때 사람이 읽을 수 있는 문자열을 얻을 수 있다. 

 

728x90
Posted by 반달가면