MIME 형식으로 이메일을 디코딩하는 방법

오늘날 전송되는 대부분의 이메일은 MIME(Multipupose Internet Mail Extensions) 형식입니다. 이를 통해 일반 텍스트 및 서식 있는 텍스트/HTML 버전, 인라인 이미지 및 첨부 파일과 함께 이메일을 보낼 수 있습니다. MIME 확장을 표준 RFC/822 형식의 메시지에 추가할 수 있으므로 이전 메일 시스템과의 역호환성을 달성할 수 있습니다.

1 단계

이메일 메시지의 내용을 로드합니다.

오늘의 비디오

2 단계

"Content-Type" 헤더를 확인하십시오. 콘텐츠 유형이 멀티파트인 경우(즉, "멀티파트/혼합", "멀티파트/대체" 등) 메시지에는 구문 분석할 여러 섹션이 있습니다. 콘텐츠 유형이 멀티파트인 경우 아래 단계를 계속합니다.

3단계

Content-Type 헤더에는 MIME 부분 경계를 지정하기 위해 MIME 메시지를 생성한 코드에서 사용하는 고유 문자열이 포함되어야 합니다. 예시:

콘텐츠 유형: 멀티파트/혼합; 경계="part_c7161025_fe8a_45f4_83ef_6befcfa5d021"

이 경우 경계 문자열은 "part_c7161025_fe8a_45f4_83ef_6befcfa5d021"입니다.

4단계

각 MIME 부분은 빈 줄에 두 개의 대시("--")가 앞에 오는 경계 문자열로 구분됩니다. 부품 경계를 찾기 위해 메시지를 한 줄씩 스캔해야 합니다. 경계 사이의 모든 텍스트 최종 CR/LF 제외 해당 MIME 부분의 일부입니다.

중요: 마지막 MIME 부분은 두 개의 대시가 더 오는 경계 문자열로 끝납니다.

예시:

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 첫 번째 MIME 부분입니다.

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 두 번째 MIME 부분

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021 마지막 MIME 부분입니다.

--part_c7161025_fe8a_45f4_83ef_6befcfa5d021--

5단계

그런 다음 각 MIME 부분을 구문 분석해야 합니다. 각 MIME 부분의 형식은 원본 RFC/822 형식 메시지와 유사합니다. 여기에는 일련의 헤더, 빈 줄, 본문 데이터가 차례로 포함됩니다.

6단계

MIME 부분은 자체 "Content-Type" 헤더와 경계 문자열이 있는 다중 부분일 수 있습니다. 코드는 하위 노드에 도달할 때까지 MIME 부분을 재귀적으로 구문 분석해야 합니다.

7단계

MIME 부분은 단순히 바이너리 첨부 파일일 수 있습니다. 이 경우 일반적으로 전송 인코딩과 함께 파일 이름 헤더가 제공됩니다. BASE64는 널리 사용되는 인코딩 유형입니다. 이 경우 전체 MIME 부분 본문을 BASE64로 디코딩해야 합니다. 예를 들어 다음은 첨부된 JPG 이미지의 처음 몇 줄입니다.

=NextPart_003_01C755EF.43F2628D 콘텐츠 유형: image/jpeg; name="testimage.jpg" 콘텐츠 전송 인코딩: base64 콘텐츠 설명: testimage.jpg 콘텐츠 처리: 첨부 파일; 파일명="testimage.jpg"

/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0a HBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy MjIyMjIyMjIyMjIyMjIyMjIyMjIyMjImIyMjIy 아EBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAAgEDAwIEAwUFBAQA

8단계

메시지의 HTML 본문은 ContentType: Multipart/Alternative MIME 섹션 내부의 ContentType: Text/Html인 MIME 섹션에 있어야 합니다.

9단계

메시지의 일반 텍스트 본문은 ContentType: Multipart/Alternative MIME 섹션 내부의 ContentType: Text/plain인 MIME 섹션에 있어야 합니다.

필요한 것

  • 컴퓨터 언어(예: C++, C#, VB 등)에 대한 지식.

  • RFC/822 형식의 이메일 메시지 형식에 대한 기본 지식.

RFC 822 참조 http://www.ietf.org/rfc/rfc0822.txt? 번호=822 및 RFC 1341 http://www.ietf.org/rfc/rfc1341.txt? 번호=1341 자세한 내용은. C#으로 코딩하는 경우 다음 위치에서 훌륭한 무료 라이브러리를 사용할 수 있습니다. http://www.codeproject.com/csharp/mime_project.asp.