본문으로 건너뛰기
실습하기

이메일 메시지 포맷과 MIME

이메일은 단순히 텍스트만을 전송하는 것이 아니라, 메시지를 다양한 방식으로 포맷팅하여 전송할 수 있습니다.

이 과정에서 MIME이라는 형식이 중요한 역할을 합니다.

이번 학습에서는 이메일 메시지의 기본 구조와 함께 MIME 형식을 활용한 이메일 작성법을 알아보겠습니다.


이메일 메시지의 구조

이메일은 크게 헤더(Header)본문(Body) 두 부분으로 나눌 수 있습니다.


헤더

발신자, 수신자, 제목과 같은 이메일의 기본 정보를 포함합니다.

주요 헤더 항목은 다음과 같습니다.

  • From: 발신자 이메일 주소

  • To: 수신자 이메일 주소

  • Subject: 이메일 제목

  • Date: 이메일 발송 일시

  • Cc: 참조 이메일 주소

  • Bcc: 숨은 참조 이메일 주소


본문

실제 이메일의 내용이 담긴 부분입니다.

텍스트, 이미지, 링크, HTML 파일 등 다양한 요소가 포함될 수 있습니다.

이메일 메시지 기본 구조
From: sender@example.com
To: recipient@example.com
Subject: Greetings
Cc: cc@example.com

안녕하세요, 잘 지내시나요?

이메일에 다양한 형식을 더하는 MIME

MIME(Multipurpose Internet Mail Extensions)은 이메일에 여러 형식의 데이터를 포함할 수 있도록 하는 표준입니다.

원래 이메일은 텍스트 형식만을 지원했지만, MIME 덕분에 이미지, 오디오, 비디오, 파일 첨부 등이 가능해졌습니다.


MIME의 주요 구성 요소

  • Content-Type: 이메일 본문이나 첨부 파일의 유형을 정의합니다. 예를 들어 text/plain은 일반 텍스트, text/html은 HTML 형식의 텍스트를 의미합니다.

  • Content-Transfer-Encoding: 이메일 내용이 인코딩(암호화)된 방식을 정의합니다. 주로 base64quoted-printable 방식을 사용합니다.

  • Boundary: 여러 MIME 파트를 구분하기 위한 구분자입니다. 이메일 본문에 여러 가지 형식이 포함될 때 각각의 파트를 구분하는 역할을 합니다.


MIME 형식을 사용한 이메일 작성하기

이제 MIME 형식을 사용하여 간단한 HTML 이메일을 작성해 보겠습니다.

아래와 같이 HTML을 활용하면 이메일을 다채롭게 꾸밀 수 있습니다.

MIME 형식을 사용한 이메일 예시
# smtplib 라이브러리 불러오기
import smtplib

# 이메일 라이브러리 불러오기
from email.mime.multipart import MIMEMultipart

# 이메일 본문 라이브러리 불러오기
from email.mime.text import MIMEText

# 코드프렌즈 가입 이메일만 수신 가능
receiver_email = "youremail@example.com"

# 발신자 이메일 설정
sender_email = "admin_email"
sender_password = "admin_password"
smtp_server = "smtp.gmail.com"
port = 587

# 이메일 구성
msg = MIMEMultipart('alternative')

msg['Subject'] = "[코드프렌즈] 안녕하세요, 코드프렌즈입니다."
msg['From'] = sender_email
msg['To'] = receiver_email

# HTML 형식의 이메일 본문
html = """
<html>
<body>
<h1>HTML 이메일</h1>
<p>
<span style="color:blue;">이메일</span> 발송을
<b>성공적으로</b>완료했습니다!
</p>
</body>
</html>
"""

# MIME 파트 추가
html_email = MIMEText(html, 'html')
msg.attach(html_email)


# SMTP 서버 연결
server = smtplib.SMTP(smtp_server, port)

# TLS(이메일 암호화) 연결
server.starttls()

# 이메일 로그인
server.login(sender_email, sender_password)

# 이메일 메시지를 문자열로 변환
text = msg.as_string()

# 이메일 전송
server.sendmail(sender_email, receiver_email, text)

# SMTP 서버 연결 종료
server.quit()

print("이메일 전송 완료! 수신함을 확인해 주세요.")

위 코드는 간단한 HTML과 CSS를 활용해 제목(h1)과 단락(p)을 포함한 이메일 본문을 작성합니다.

특정 글자를 파란색으로 처리하기 위해 span 태그와 CSS color 속성을 사용했으며, 굵은 글씨를 표현하기 위해 b 태그를 사용했습니다.


실습

코드 에디터의 실습 코드에서 receiver_email에 코드프렌즈 가입 이메일을 입력하거나 잘 반영되어 있는지 확인하고, 코드를 실행해보세요.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!