
imap_savebody 함수는 이메일 본문을 저장하는 데 사용되는 함수입니다. 이 함수를 사용하여 이메일 본문을 저장하는 방법에 대해 설명하겠습니다.
### 저장할 파일의 경로를 지정하는 방법
imap_savebody 함수를 사용할 때, 저장할 파일의 경로를 지정하는 방법은 다음과 같습니다.
#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')
# 이메일 메시지 ID
msg_id = 'your_email_id'
# 이메일 본문을 읽어 들여 저장할 파일 경로
save_path = 'C:\temp\email_body.txt'
# 이메일 본문을 읽어 들여 저장
status, msg = mail.fetch(msg_id, '(RFC822)')
raw_email = msg[0][1]
email_message = BytesParser().parsebytes(raw_email)
with open(save_path, 'wb') as f:
f.write(email_message.get_payload(decode=True))
### 특정 이메일 주소를 읽어들일 수 있는 방법
imap_savebody 함수를 사용하여 특정 이메일 주소를 읽어들일 수 있는 방법은 다음과 같습니다.
#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')
# 특정 이메일 주소
email_address = 'your_email@gmail.com'
# 이메일 본문을 읽어 들여 저장할 파일 경로
save_path = 'C:\temp\email_body.txt'
# 이메일을 검색하여 메시지 ID를 얻습니다.
status, search_data = mail.search(None, '(FROM "%s")' % email_address)
if search_data:
# 메시지 ID를 사용하여 이메일 본문을 읽어 들여 저장
msg_id = search_data[0].decode('utf-8').split()[0]
status, msg = mail.fetch(msg_id, '(RFC822)')
raw_email = msg[0][1]
email_message = BytesParser().parsebytes(raw_email)
with open(save_path, 'wb') as f:
f.write(email_message.get_payload(decode=True))
### 이메일 본문이 너무 큰 경우
이메일 본문이 너무 큰 경우, 이메일 본문을 작은 크기의 파일로 나누어 저장할 수 있습니다. 예를 들어, 이메일 본문을 10KB씩 나누어 저장할 수 있습니다.
#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')
# 이메일 메시지 ID
msg_id = 'your_email_id'
# 이메일 본문을 읽어 들여 저장할 파일 경로
save_path = 'C:\temp\email_body.txt'
# 이메일 본문을 읽어 들여 저장
status, msg = mail.fetch(msg_id, '(RFC822)')
raw_email = msg[0][1]
email_message = BytesParser().parsebytes(raw_email)
# 이메일 본문을 10KB씩 나누어 저장
chunk_size = 10 * 1024
with open(save_path, 'wb') as f:
for i in range(0, len(email_message.get_payload(decode=True)), chunk_size):
chunk = email_message.get_payload(decode=True)[i:i + chunk_size]
f.write(chunk)
### 에러가 발생하는 경우
imap_savebody 함수를 사용하여 이메일 본문을 저장할 때, 에러가 발생하는 경우를 대비하여 다음과 같이 처리할 수 있습니다.
#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')
# 이메일 메시지 ID
msg_id = 'your_email_id'
# 이메일 본문을 읽어 들여 저장할 파일 경로
save_path = 'C:\temp\email_body.txt'
try:
# 이메일 본문을 읽어 들여 저장
status, msg = mail.fetch(msg_id, '(RFC822)')
raw_email = msg[0][1]
email_message = BytesParser().parsebytes(raw_email)
with open(save_path, 'wb') as f:
f.write(email_message.get_payload(decode=True))
except Exception as e:
print(f'에러 발생: {e}')
### 자세한 예제
imap_savebody 함수를 사용하여 이메일 본문을 저장하는 방법에 대한 자세한 예제는 다음과 같습니다.
#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')
# 이메일 메시지 ID
msg_id = 'your_email_id'
# 이메일 본문을 읽어 들여 저장할 파일 경로
save_path = 'C:\temp\email_body.txt'
# 이메일 본문을 읽어 들여 저장
status, msg = mail.fetch(msg_id, '(RFC822)')
raw_email = msg[0][1]
email_message = BytesParser().parsebytes(raw_email)
# 이메일 본문을 10KB씩 나누어 저장
chunk_size = 10 * 1024
with open(save_path, 'wb') as f:
for i in range(0, len(email_message.get_payload(decode=True)), chunk_size):
chunk = email_message.get_payload(decode=True)[i:i + chunk_size]
f.write(chunk)
print('이메일 본문이 저장되었습니다.')
이 예제는 imap_savebody 함수를 사용하여 이메일 본문을 저장하는 방법을 보여줍니다. 이메일 본문을 10KB씩 나누어 저장하고, 에러가 발생하는 경우를 대비하여 처리합니다.
2025-05-24 21:39