2016-09-19 12 views
0

메시지 부분에 Content-Id 헤더 형식의 경우 정말 혼란 스럽습니다.Content-Id 헤더의 정확한 형식

그것은 단지 RFC 2045은, 그러나 잠시 헤더의 형식을 커버 나에게 보인다 높은 수준의 사용자 에이전트를 구성에서

를, 한 몸이 서로 참조 할 수 있도록하는 것이 바람직 할 수있다 . 메시지-ID의 값처럼

id := "Content-ID" ":" msg-id 

, 콘텐츠 - : 따라서, 시체
가 「메시지 ID」헤더 필드 문법적
동일하다 "콘텐츠 ID"헤더 필드를 사용하여 표지 할 수있다 ID 값은 고유 한 이되도록 생성해야합니다.

RFC 2822 그래서 같은 msg-id 토큰의 포맷을 설명한다 :

메시지 식별자 (MSG-ID)는 내부 CFWS없이 각도 ADDR 구조체에 구문과 유사하다.

메시지 ID = "메시지 ID :"=에 회신-에 MSG-ID의 CRLF

"인 - 회신받는 사람 :"1 개 * MSG-ID의 CRLF

참조 = "참조 "1 개 * MSG-ID의 CRLF

MSG-ID가 = [CFWS]"<는 "ID는 좌측"@ "ID-오른쪽"> "[CFWS]

ID 왼쪽 = 도트 원자 텍스트/no-fold-quote/obs-id-left

i D-오른쪽 = 도트 원자 텍스트/아니오 배 리터/OBS-ID 오른쪽

없이 배 인용 = DQUOTE의 * (qtext/인용 쌍)

없이 배 리터 DQUOTE = "["* (dtext/인용 쌍)은 "]"

가 짧게 이야기 : 그것은 ('@') 심볼에 포함 단지 메시지 Message-Id 헤더 등을들 수있다. 그러나 MIME 형식에 대한 거의 모든 독자 친화적 인 기사는 Content-Id의 예를 제공하며 myimagecid 또는 inlineimage001과 같은 실제가 아닌 식별자와 at 기호가없는 임의로 생성 된 UUIDS를 포함하여은 at 기호가 아닙니다. 그들이 반드시 Message-Id 헤더를 사용하는 것처럼 '@'기호의 중요성을 반드시 강조해야합니다. 권리?

나는 실제 전자 메일 클라이언트에 대한 몇 가지 테스트를 실행하고이 포함 된 인라인 이미지와 함께 이메일을 구성하는 방법을 참조했습니다

  • 썬더 버드는 기호에와 식별자를 생성합니다. 예 : [email protected]
  • Gmail은 과 같은 기호가이고 도메인 부분이없는 식별자를 생성합니다.예 : ii_abc1234x0_12345ab12abcdefa

나는 (누군가가 그랬다면, 위의 목록을 완료하는 데 큰 것) 더 이상 전자 메일 클라이언트를 테스트하지 않았지만,이 두 사람은 이미 눈에 띄는 차이를 보여줍니다. Google은 RFC 표준을 준수하지 않습니까? 확실히 냄새가 나는데, 나는 뭔가를 놓쳤거나 형식이 정말로 중요하지 않기 때문에 오히려 불안해하고 있는지를 알고 싶다. 또한 얼마나 많은 인기있는 이메일 클라이언트가 실제로 'at'기호를 버리는 지 확인하는 데 관심이 있습니다.

답변

1

일부 메일 클라이언트가하는 것이 아니라 사양이 말하는대로 이동하십시오.

예, Content-Id 헤더는 사양이 말하는 방식에 맞는 값을 가져야하며 그에 따라 '@'기호가 있어야합니다.

이메일의 세계는 표준을 존중하지 않고 자신의 일을하는 많은 메일 클라이언트 및 서버의 깨진 지옥입니다.

지난 17 년 동안 메일 소프트웨어를 작성한 사람으로서, Google이 사양에서 벗어나는 유일한 곳이 아니라는 점을 확신 할 수 있습니다.

+0

메일을 작성할 때 확실한 사양입니다. 수신 메일을 구문 분석 할 때 표준의 위반 사항 (Gmail)이나 악의적 인 스팸 (스팸)이 무엇인지 잘 알고 그에 따라 행동해야합니다. 필자는 사양과 일치하지 않는 모든 이메일을 거부 할 수 없습니다. 이제이 미친 집을 관리하는 데있어 17 년의 경험을 활용하여 답변을 확장하고 이메일 클라이언트/서버에서 침해 당할 수있는 사양의 다른 부분을 알려주십시오. 나는 또한 구글이 위반하는 다른 사양 (메일과 관련 될 필요는 없다)에 대해 매우 궁금하다. – Tomalla

+1

나는 2013 년에 주소 헤더를 파싱하는 것에 대해 약간의 말을 전했다. http://jeffreystedfast.blogspot.com/2013/08/why-decoding-rfc2047-encoded-headers-is.html 그리고 나서 썬더 버드 개발자를 발견했다. 당신이 http://quetzalcoatal.blogspot.com/에서 찾을 수있는 이메일과 비슷한 이슈에 관해서 나 자신보다 더 웅변 적이다.) - 그는 MIME 파서를 구현하는데 관심이 있다면 읽는 것을 매우 권할만한 블로그 게시물 시리즈를 가지고있다. 심지어는 전자 메일 주소 구문 분석기 일 수도 있습니다. – jstedfast

+1

내가 발견 한 메일 사양의 다른 Gmail 편차는 IMAP 구현과 관련이 있습니다. 예를 들어, 몇 년 전에'FETCH' 명령에 사용하기 위해 정의 된'ALL','FAST' 또는'FULL' 별칭을 처리하지 못했습니다 (아마도 지금은 고정되어 있을지 모르겠습니다). GMail의 IMAP 서버 구현은 동일한 경계를 가진 중첩 된 multipart를 만났을 때 중단되고 https://github.com/jstedfast/MailKit/issues/205의 예와 같이 'BODYSTRUCTURE'를 반환합니다. IMAP 클라이언트 관점에서 성가 시지만 실제로 이 문제에 대해 Google에 이해하고 공감하십시오. – jstedfast