이 절에는 공용 MIME 헤더가 요약되어 있어 신속히 참조하는 데 유용할 수 있습니다. MIME의 명확한 스펙이 되지는 않습니다. 일부의 경우 MIME 구문 분석기는 표준이 엄격히 적용되지 않는 문서를 허용합니다. 예를 들어, MIME-Version 헤더가 반드시 있을 필요는 없습니다. MIME 문서에 표시되기만 하면 모든 표준 MIME 헤더 필드가 논리 트리에 기록됩니다. MIME 구문 분석기는 컨텐츠 유형 헤더 필드에만 각별한 주의를 기울입니다.
MIME-Version 헤더의 한 예에 표시된 바와 같이 모든 MIME 헤더에는 괄호 안의 주석이 포함될 수 있습니다.
예:
MIME-Version: 1.0(my-application 1.2에서 생성)
RFC 2045에 부합하는 MIME 문서의 경우 이 필드는 값이 1.0인 최상위 레벨의 헤더에 필요합니다. 개별 부분에는 MIME-Version을 지정하지 않아야 합니다.
RFC 2045에 부합하는 문서에는 Content-Type이 필요하지 않지만 MIME 구문 분석기에는 최상위 레벨의 Content-Type이 필요합니다. Content-Type은 text/plain으로 디폴트 설정됩니다. Content-Type은 각 부분의 데이터 유형을 유형/하위 유형으로 정의합니다. MIME 구문 분석기는 Content-Type 값 대부분을 승인하여 논리 트리에 단순히 저장합니다. 이에 대한 유일한 예외는 다음과 같습니다.
구문:
Content-Type: type/subtype;parameter
유형 및 하위 유형이 Content-Type을 정의하고 선택적 매개변수가 세미콜론으로 디리미트됩니다.
예 1:
Content-Type: multipart/related;type=text/xml
예 1에서 Content-Type이 multipart/related로 정의되며 또한 선택적 매개변수가 정의됩니다(type=text/xml). 이것이 구문적으로 올바르기는 하지만 올바른 경계 매개변수가 없는 경우에는 이 메시지가 거부됩니다.
예 2:
Content-Type: multipart/related;boundary=Boundary;type=text/xml
예 2에는 구문 및 의미의 관점 모두에서 올바른 Content-Type 정의가 표시되어 있습니다. 경계 값에는 선택적으로 인용 부호가 붙을 수 있습니다. MIME 본문에 표시될 경우 값 앞에 순서 '--'가 오며 결과 값(이 예에서는 --Boundary)이 메시지 본문에 표시되지 않는다는 점에 주의해야 합니다. 메시지 데이터가 quoted-printable로 인코드될 경우 quoted-printable 본문에는 표시될 수 없는 "=_"와 같은 순서를 포함하는 경계를 유지해야 합니다.
일부 공용 Content-Type 값이 아래 표시되어 있습니다. 기타 모든 값이 허용되며 논리 트리에 단순히 저장됩니다.
Content-Type | 설명 |
---|---|
text/plain | 일반적으로 보통 편지 또는 뉴스 메시지에 사용. 텍스트/리치텍스트 또한 공용입니다. |
text/xml | 일반적으로 SwA(SOAP with Attachments)에 사용. |
application/octet-stream | 메시지가 알 수 없는 유형이고 바이트로 데이터 종류가 포함된 경우에 사용. |
application/xml | 응용프로그램에 특정한 xml 데이터에 사용. |
x-type | 비표준 컨텐츠 유형에 사용. x-로 시작해야 합니다. |
image/jpeg | 이미지에 사용. image/jpeg 및 image/gif가 사용되는 공용 이미지 형식입니다. |
multipart/related | 메시지의 여러 관련 부분에 사용. 특히 SwA(SOAP with Attachments)에 사용 |
multipart/signed | 서명이 포함된 메시지의 다중 관련 부분에 사용. 특히 S/MIME에 사용 |
multipart/mixed | 한 메시지의 다중 독립 부분에 사용. |
선택적. 여러 Content-Type이 8비트 문자 또는 2진 데이터로 표시됩니다. 여기에는 보통 UTF-8 또는 UTF-16 인코딩을 사용하는 XML이 포함될 수 있습니다. 이 데이터 유형은 일부 전송 프로토콜에서 전송이 불가능하며 7비트로 인코드될 수 있습니다.
Content-Transfer-Encoding 헤더 필드는 이 데이터 유형을 7비트 형식으로 인코딩하는 데 사용한 변환 유형을 표시하는 데 사용합니다.
WS-I 기본 프로파일에서 허용하는 값은 다음과 같습니다.
7비트, 8비트 및 2진 값 모두는 인코딩이 수행되지 않음을 의미합니다. MIME 준수 메일 게이트웨이가 이 값을 사용하여 메시지 핸들링 방법을 제어할 수도 있습니다. 예: SMTP로 라우팅하기 전에 7비트로 인코딩.
base64 및 quoted-printable 값은 컨텐츠가 인코드되었음을 의미합니다. quoted-printable 값은 원래 7비트 이외의 문자만이 인코드되고 사람이 여전히 읽을 수 있는 문서가 됨을 의미합니다. 이 설정값은 보통 text/plain의 Content-Type에 사용됩니다.
선택적. 이를 통해 부분에 레이블을 표시하고 다른 메시지 부분에서 참조할 수 있습니다. 이 부분은 보통 메시지의 부분 0(첫 번째)에서 참조됩니다.
선택적. 이를 통해 부분을 설명할 수 있습니다.
다음 절은 base64 및 quoted-printable 인코딩의 기본 안내서를 제공하는 데 그 목적을 두고 있습니다. 명확한 MIME 인코딩 스펙에 대해서는 RFC 1521을 참조하십시오.
원본 데이터가 세 개의 옥텟 그룹으로 구분되어 있습니다. 각 그룹이 네 개의 병합된 6비트 그룹으로 처리되며 이 병합 그룹 각각은 단일 자릿수의 base64 영문자로 변환됩니다. base64 영문자는 A-Z, a-z, 0-9, 및 /(A=0 및 /=63가 있음)입니다.
데이터 끝에서 24개 비트 미만을 사용할 수 있는 경우 "=" 문자를 사용하여 인코딩된 데이터를 채웁니다. 인코딩된 데이터의 최대 행 길이는 76자이며 디코딩 시 행 구분(및 위의 영문자에 없는 기타 문자)이 무시됩니다.
예:
입력 | 출력 |
---|---|
Some data encoded in base64. | U29tZSBkYXRhIGVuY29kZWQgaW4gYmFzZTY0Lg== |
life of brian | bGlmZSBvZiBicmlhbg==\012 |
what | d2hhdA== |
이 인코딩은 데이터 대부분이 인쇄 가능한 문자로 구성된 경우에만 적합합니다. 특히, 33-60 및 62-126 범위 내 문자가 보통 해당 ASCII 문자로 표시됩니다. 제어 문자 및 8비트 데이터는 순서 =에 이은 한 쌍의 16진수 숫자로 표시되어야 합니다.
상응한 16진수 형식이 사용되어야 하는 경우(각각 =09 및=20) 인코딩된 행 끝에 표시되지 않으면(소프트 행 분리가 없음) 표준 ASCII 스페이스 <SP> 및 가로 탭 <HT>가 자동으로 나타납니다.
데이터의 행 구분은 RFC 822 행 구분 순서 <CR><LF>로 표시되며 2진 데이터가 인코드되는 경우 "=0D=0A"로 인코드되어야 합니다.
base64의 경우 인코딩된 데이터에서 최대 행 길이는 76자입니다. 인코딩된 행('소프트' 행 분리) 끝의 '=' 기호는 행이 계속됨을 디코더에 알려주는 데 사용합니다.