Content-Type Multipart 란

참고

설명

Content-Type 중 하나로, 서브 타입으로 mixed, alternative, digest, related 를 갖는다. 여러 개의 독립된 섹션으로 구성된 데이터를 하나의 메시지로 조합하여 전송한다.

메시지는 헤더와 본문으로 구성되고, 이것은 NULL 라인으로 구분한다. 본문은 라인의 집합으로 평면적 구성이므로, 여러 부분(multi part)으로 나누려면 각 부분의 경계를 표시해야 하며, 이것이 Multipart Content-Type의 기본 파라미터가 된다. 이 파라미터를 boundary라 한다.

기본 구조

Content-Type: multipart/mixed; boundary=gc0p4Jq0M2Yt08j34c0p

boundary

boundary로 쓰일 수 있는 문자는 ASCII 문자 중에서 일부에 속한다.

Content-Type: multipart/mixed; boundary=gc0p4Jq0M:2Yt08j34c0p

이것은 콜론이 들어가 있으므로 올바른 boundary 구성이라고 볼 수 없다. ( 콜론은 헤더 필드 이름과 필드 본문을 구분하기 위해서 사용되는 문자이다.) 다음처럼 따옴표로 묶어 사용하면 적법하다.

Content-Type: multipart/mixed; "boundary=gc0p4Jq0M:2Yt08j34c0p"

Multipart로 구성된 메시지의 예제

From: Nathaniel Borenstein
To: Ned Freed
Date: Sun, 21 Mar 1993 23:56:48 -0800 (PST)
Subject: Sample message
MIME-Version: 1.0
Content-type: multipart/mixed; boundary="simple boundary"

This is the preamble. It is to be ignored, though it
is a handy place for composition agents to include an
explanatory note to non-MIME conformant readers.

--simple boundary                                           --------------- 
This is implicitly typed plain US-ASCII text.
It does NOT end with a linebreak.


--simple boundary
Content-type: text/plain; charset=us-ascii

This is explicitly typed plain US-ASCII text.
It DOES end with a linebreak.

--simple boundary--                                         --------------- 
This is the epilogue. It is also to be ignored.

① --simple boundary : 메시지 부분 간의 실제 경계로 사용한다. ② --simple boundary-- : multipart의 끝을 의미한다.

Content-type이 multipart로 선언되면 첫번째 경계가 나타나기 전까지의 메시지는 ‘반드시’ 무시해야 한다. 경계가 나타나면 다음 경계 전까지의 부분을 하나의 본문 파트로 처리한다. 그리고 multipart의 끝을 의미하는 바운더리가 나타나면 multipart 메시지가 끝난 것으로 처리한다. 이후의 모든 문자 또한 ‘반드시’ 무시해야 한다.

mulitpart/alternative로 구성된 메시지의 예제

각 부분의 내용은 같지만, 서로 다른 포맷을 가진다.

From: Nathaniel Borenstein
To: Ned Freed
Date: Mon, 22 Mar 1993 09:41:09 -0800 (PST)
Subject: Formatted text mail
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary=boundary42

--boundary42
Content-Type: text/plain; charset=us-ascii

... plain text version of message goes here ...

--boundary42
Content-Type: text/enriched

... RFC 1896 text/enriched version of same message goes here ...

--boundary42
Content-Type: application/x-whatever

... fanciest version of same message goes here ...

--boundary42--

links

social