다목적 인터넷 메일 확장 프로토콜
다목적 인터넷 메일 확장(MIME)은 이메일 형식을 확장하여 다음을 지원하는 인터넷 표준입니다:
- US-ASCII가 아닌 문자 집합의 텍스트;
- 비텍스트 첨부 파일;
- 멀티파트 메시지 본문; 그리고
- 비 ASCII 문자 집합의 헤더 정보.
SMTP는 7비트 ASCII 문자만 지원하므로 실제로 지원되는 언어가 제한됩니다. 라틴 알파벳 기반 언어는 SMTP에서 잘 처리되지만, 다른 언어는 이메일 전달 시 올바르게 표시되지 않을 수 있습니다. 그러나 MIME은 SMTP의 ASCII 지원을 확대하여 다른 문자 집합, 이미지 및 사운드를 포함한 이메일을 전송하고 표시할 수 있게 합니다. 일반적으로 모든 이메일 클라이언트와 SMTP 서버는 MIME 형식의 메시지를 올바르게 처리합니다.
MIME 헤더 이해하기
MIME 헤더는 프로토콜에 대한 정보를 포함합니다.
MIME-Version
이는 메시지가 MIME 형식임을 나타냅니다. 형태는 다음과 같습니다:
MIME-Version: 1.0
Content-Type
이것은 메시지의 콘텐츠 유형을 유형-서브타입 쌍으로 나타냅니다(예: text/plain, text/html). 멀티파트 콘텐츠 유형은 텍스트, HTML, 첨부 파일, 이미지, 오디오, 비디오 등을 포함할 수 있습니다.
Content-Type: multipart
Content-Transfer-Encoding
content-type에 지정된 인코딩 위에 바이너리-텍스트 인코딩 스킴이 사용되는지를 나타냅니다. 사용한다면 어떤 것인지를 명시합니다. 여기서 7-bit, 8-bit, binary 코딩 타입을 지정할 수 있습니다.
Encoded-Word
SMTP 메시지 헤더는 일반적으로 ASCII 문자를 사용합니다. 비 ASCII 문자는 리터럴 문자열 대신 MIME 인코딩된 워드 구문을 사용해야 합니다. 형식은 다음과 같습니다:
"=? charset ? encoding ? encoded text ?=".
멀티파트 메시지
MIME 멀티파트 메시지는 content-type 헤더에 경계(boundary)를 포함합니다. 이 경계는 어느 파트에도 나타나서는 안 되며, 파트 사이와 메시지 본문의 시작 및 끝에 다음과 같이 배치됩니다:
MIME-version: 1.0
Content-type: multipart/mixed; boundary="frontier"
This is a multi-part message in MIME format.
--frontier
Content-type: text/plain
This is the body of the message.
--frontier
Content-type: application/octet-stream
Content-transfer-encoding: base64
PGh0bWw+CiAgPGhlYWQ+CiAgPC9oZWFkPgogIDxib2R5PgogICAgPHA+VGhpcyBpcyB0aGUg
Ym9keSBvZiB0aGUgbWVzc2FnZS48L3A+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==
--frontier--
각 파트는 자체 콘텐츠 헤더와 본문으로 구성됩니다.
멀티파트 서브타입
MIME 표준은 다양한 multipart-message 서브타입을 정의합니다. 서브타입은 전체 메시지의 "Content-Type" 헤더에 지정됩니다.
다음은 가장 일반적으로 사용되는 서브타입 목록입니다.
- Mixed: Multipart/mixed는 서로 다른 "Content-Type" 헤더를 가진 파일들을 인라인으로 전송할 때 사용됩니다. 그림이나 다른 쉽게 읽을 수 있는 파일을 전송하면 대부분의 메일 클라이언트가 인라인으로 표시합니다.
- Message: 메시지 파트는 이메일 메시지를 포함합니다.
- Digest: 다이제스트는 여러 텍스트 메시지를 전송하는 간단한 방법입니다. 각 파트의 기본 content-type은 "message/rfc822"입니다.
- Alternative: 대안 서브타입은 각 파트가 동일(또는 유사)한 콘텐츠의 "대안" 버전이며, 각각 "Content-Type" 헤더에 의해 다른 형식으로 표시된다는 것을 나타냅니다.
가장 일반적으로 multipart/alternative는 두 파트(플레인 텍스트(text/plain)와 HTML(text/html))를 가진 이메일에 사용됩니다. 플레인 텍스트 파트는 호환성을 제공하고, HTML 파트는 서식 및 하이퍼링크 사용을 가능하게 합니다. 대부분의 이메일 클라이언트는 플레인 텍스트를 HTML보다 선호하도록 옵션을 제공하는데, 이는 로컬 환경이 애플리케이션이 메시지의 "최선" 파트를 선택하는 방식에 영향을 줄 수 있는 예시입니다.