가이드라인

이메일 메시지 포맷과 MIME

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

이 과정에서 MIME이라는 정보 식별 표준을 사용합니다.

MIMEMultipurpose Internet Mail Extensions의 약자로, 이메일에 여러 형식의 데이터를 포함할 수 있도록 하는 표준입니다.

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


이메일 메시지의 구조

이메일은 크게 헤더(Header)본문(Body) 두 부분으로 구성됩니다.


헤더

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

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

  • From : 발신자 이메일 주소

  • To : 수신자 이메일 주소

  • Subject : 이메일 제목

  • Date : 이메일 발송 일시

  • Cc : 참조 이메일 주소

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


본문

본문은 이메일의 실제 내용을 담습니다.

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

일반적으로 이메일 본문은 text/plain(일반 텍스트) 및 text/html(HTML 형식)으로 작성됩니다.


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

MIME은 이메일에 여러 형식의 데이터를 포함할 수 있도록 하는 정보 식별 표준입니다.

원래 이메일은 텍스트 형식만 지원했지만, 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에 코드프렌즈 가입 이메일을 입력하거나 잘 반영되어 있는지 확인하고, 코드를 실행해보세요.

Mission
0 / 1

이메일의 본문은 오직 텍스트만 포함될 수 있다.

O
X

가이드라인

AI 튜터

배포

디자인

업로드

수업 노트

즐겨찾기

도움말

코드 에디터

코드 실행
코드 생성

실행 결과