본문 바로가기

개발/JAVA

[Java mail] MIME 구조

반응형
메일 본문은 이메일의 실제 내용을 나타내며, 주로 텍스트 형식이나 HTML, Multipart 요소를 포함할 수도 있습니다.
각 부분은 특정 형식이나 콘텐츠 유형을 나타내는 MIME(Multipurpose Internet Mail Extensions) 형식으로 지정됩니다.
이번글에서는 MIME에 대해 정리해보겠습니다.
MIME (Multipurpose Internet Mail Extensions)

 

  • 이메일이나 웹에서 텍스트 이외의 데이터를 전송할 때 사용되며, 다양한 유형의 데이터를 포함하는 것을 가능하게 합니다.
  • 텍스트 이외의 데이터, 예를 들어 이미지, 오디오, 비디오 등의 멀티미디어 데이터를 이메일이나 웹을 통해 전송할 수 있도록 지원합니다.
  • 여러 유형의 데이터를 함께 포함하는 멀티파트 메시지를 생성할 수 있도록 합니다. 이를 통해 텍스트, 이미지,
    첨부 파일 등 여러 유형의 데이터를 하나의 메시지에 포함할 수 있습니다.
 
1. Content-Type 헤더
MIME 본문의 시작 부분에 위치하며, 컨텐츠의 유형과 인코딩 방식을 지정합니다. 예를 들어, 텍스트인지, 이미지인지, 오디오인지, 비디오인지 등을 명시합니다.

 

2. Content-Transfer-Encoding
이 헤더는 본문의 데이터가 어떤 방식으로 인코딩되었는지를 지정합니다. 대표적으로는 base64quoted-printable과 같은 방식이 사용됩니다.
 
3. Boundary
멀티파트 MIME 메시지의 경우에는 각 부분을 구분하는 Boundary가 사용됩니다. BoundaryMIME 본문 내에서 부분들을 나누는 역할을 합니다. 이러한 Boundary는 본문의 시작과 끝, 각 부분 사이에 위치합니다.
 
4. 본문
하나의 메시지에 여러 부분이 포함될 수 있습니다. 각 부분은 각각의 Content-TypeContent-Transfer-Encoding을 가지며, 개별적으로 읽을 수 있습니다.

 

 

Content-Type
text/plain 일반적인 텍스트 메시지를 나타냅니다. 이 유형은 보통 플레인 텍스트 이메일에 사용됩니다.
text/html HTML 형식의 본문을 나타냅니다. 이 유형은 복잡한 서식, 이미지 및 하이퍼링크가 포함된 이메일을 지원합니다.
multipart
/mixed
여러 유형의 컨텐츠를 포함하는 복합 메시지를 나타냅니다. 일반적으로 이 유형은 이메일에 첨부 파일이 포함된 경우에 사용됩니다.
multipart
/alternative
여러 가지 형식의 본문을 가진 대안을 나타냅니다. 일반적으로 텍스트/plain text/html 형식의 두 가지 버전의 본문이 있을 때 사용됩니다.
multipart
/related
관련된 리소스(일반적으로 HTML 본문에 포함된 이미지 등)를 함께 포함하는 복합 메시지를 나타냅니다.

 

 

 

Boundary
  • MIME 헤더와 MIME 본문 사이에 위치하며, MIME 헤더의 Content-Type 필드에서 선언됩니다. 보통은 MIME 본문의 첫 부분에 위치하고, Boundary가 나타내는 문자열은 해당 본문의 시작과 끝, 각 부분 사이를 구분하는 역할을 합니다.
  • 일반적으로 무작위로 생성된 문자열로 이루어져 있으며, Boundary는 각 영역을 구분하기 위해 MIME 본문 내에서 고유해야 합니다.
  • Boundary 문자열은 MIME 헤더에서는 앞에 "--"를 붙이고, MIME 본문에서는 앞에 "--"를 붙이고 뒤에 추가적인 임의의 문자열을 붙여야 합니다.

반응형