
imap_bodystruct를 사용할 때는 이메일 본문을 파싱하기 전에 이메일의 구조를 파악하는 것이 중요합니다. 이메일 본문의 구조는 multipart/mixed, multipart/alternative, multipart/related 등 다양한 형태가 있을 수 있습니다.
이러한 경우, 이메일 본문을 파싱하기 전에 이메일의 구조를 확인하고, 적절한 파싱 방법을 선택해야 합니다.
예를 들어, multipart/mixed 형태의 이메일 본문을 파싱할 때는, 각 부분을 별도로 파싱해야 합니다.
#hostingforum.kr
python
import imaplib
import email
from email.parser import BytesParser
# 이메일 서버 연결
mail = imaplib.IMAP4('imap.gmail.com')
mail.login('your_email@gmail.com', 'your_password')
mail.select('inbox')
# 이메일 검색
status, messages = mail.search(None, 'ALL')
# 이메일 본문 파싱
for num in messages[0].split():
status, msg = mail.fetch(num, '(RFC822)')
raw_email = msg[0][1]
# 이메일 본문을 파싱하는 parser
parser = BytesParser()
email_message = parser.parsebytes(raw_email)
# 이메일 본문의 구조를 확인합니다.
if email_message.is_multipart():
# multipart/mixed 형태의 이메일 본문을 파싱합니다.
for part in email_message.walk():
if part.get_content_type() == 'text/plain':
# 텍스트 본문을 파싱합니다.
body = part.get_payload()
print(body)
else:
# 단일 텍스트 본문을 파싱합니다.
body = email_message.get_payload()
print(body)
이러한 예제를 통해, 이메일 본문을 파싱하기 전에 이메일의 구조를 파악하고, 적절한 파싱 방법을 선택함으로써 에러를 해결할 수 있습니다.
2025-08-02 02:53