이메일 메시지 포맷과 MIME
이메일은 단순히 텍스트만을 전송하는 것이 아니라, 메시지를 다양한 방식으로 포맷팅(Formatting)
하여 전송할 수 있습니다.
이 과정에서 MIME
이라는 정보 식별 표준을 사용합니다.
MIME은 Multipurpose 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 : 이메일 내용이 인코딩(암호화)된 방식을 정의합니다. 주로
base64
나quoted-printable
방식을 사용합니다. -
Boundary : 여러 MIME 파트를 구분하기 위한 구분자입니다. 이메일 본문에 여러 가지 형식이 포함될 때 각각의 파트를 구분하는 역할을 합니다.
MIME 형식을 사용한 이메일 작성하기
이제 MIME 형식을 사용하여 간단한 HTML 이메일을 작성해 보겠습니다.
아래와 같이 HTML을 활용하면 이메일을 다채롭게 꾸밀 수 있습니다.
# 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
에 코드프렌즈 가입 이메일을 입력하거나 잘 반영되어 있는지 확인하고, 코드를 실행해보세요.
이메일의 본문은 오직 텍스트만 포함될 수 있다.
가이드라인
AI 튜터
배포
디자인
업로드
수업 노트
즐겨찾기
도움말
코드 에디터
실행 결과