2011-01-29 4 views
2

나는 자바에서보다 완벽한 전자 메일 검증 도구를 사용하고 있으며 "username"과 "address"부분에 전자 메일 내에 주석을 포함시키는 흥미로운 기능을 보았습니다.전자 메일 호스트 이름 이외의 주석을 포함 할 수 있습니까?

http://www.dominicsayers.com/isemail/의 다음 스 니펫은 이메일 내의 댓글에 대해 이렇게 말합니다.

주석은 (다음과 같은) 괄호로 묶은 텍스트입니다. 이것들은 정상이지만 주소의 일부가 아닙니다. 즉, [email protected]으로 보낸 메일은 첫 번째 (a) .last (b) @example (c) .com (d)와 같은 위치로 이동합니다. 이상하지만 사실.

  • 이와 같은 전자 메일이 실제로 존재합니까?
  • 이렇게 호스트를 구성 할 수 있습니까?

"google (ignore) .com"과 같은 URL을 입력하려고했지만 파이어 폭스와 다른 브라우저가 실패하고 호스트 이름 설명에 대해 잘 모르기 때문에 이것이 궁금합니다.

+0

브라우저가 리터럴 이름이'google (ignore) .com' 인 호스트를 찾고 있기 때문입니다. 물론 실패합니다.구글 이메일 주소는 사용자 이름 부분에'(a)'와'(b)'를 포함 할 수 없지만'@'다음 부분은 유효한 DNS 매핑을 가져야 만합니다. –

+0

예 브라우저가 작동하지 않는 이유를 알고 있습니다. 내 포인트는 분명히 rfc는 주석이 가능하며 실제 조회를 수행 할 때 무시된다는 것입니다. –

답변

1

그 문법 - addr-spec 내의 주석은 실제로 원래의 이메일 RFC RFC 822에서 허용되었습니다. 그러나 RFC를 RFC 2822 ... 10 년 전에 개정했을 때 사용하려는 댓글 배치는 사용되지 않습니다. 현재 버전에서 여전히 폐기 된 것으로 표시됩니다 (RFC 5322). 그 문법을 사용하여 무엇이든 내보낼 좋은 변명의 여지가 없습니다.

주소 파서는 여기에서 활용하려고하는 것과 같이 10 년 간 사용되지 않는 비트를 포함하여 모든 상상 가능한 케이스를 다루기 위해 하위 호환 가능해야합니다. 하지만 많은 메일 수신 에이전트가 이러한 주석을 올바르게 구문 분석하지 못할 것이라고 나는 확신합니다. 따라서 기술적으로 RFC의 "obsolete addressing" 섹션을 통해 허점을 발견했을지라도, 실제로 실용적이지는 않습니다.

HTTP의 경우 구문 규칙은 전자 메일 구문 규칙과 다릅니다. 보시다시피 RFC 822의 주석 섹션은 적용 할 수 없습니다.

0

스펙에서 수행 할 수 있다고해서 꼭해야한다는 것은 아닙니다. 예를 들어 Gmail은 주소에 해당 댓글 형식을 허용하지 않습니다.

둘째, 전자 메일 주소에 괄호 주석이 허용된다고해서 URL에 대해 작동한다는 의미는 아닙니다.

마지막으로, 귀하의 요구 사항에 맞게 유효성 검사기의 완성도를 조정 해 드리겠습니다. 새로운 MTA (메일 전송 에이전트)를 작성한다면 아마도 모든 것을해야 할 것입니다. 당신이 사용자 입력에 대한 유효성 검사기를 작성하는 경우, 간단하게 :

  • 모습 일 @를 들어,
  • 당신이 (이름) 전 (도메인 이름) 후 물건을 가지고 있는지 확인,
  • 메이크업을 호스트 이름 문자열에 "점"이 있는지 확인하십시오.
  • [추가 정보] DNS 이름 확인을 통해 해결되는지 확인하십시오.
+0

왜 처음부터 코멘트를 포함시키고 싶은지 이해하지 못합니다. 특별히 좋은 이유가없는 한 더 복잡한 것처럼 보입니다. –

+0

@mP : BNF를 주소로 쓰는 것으로 시작했다고 생각합니다. 그들은 RFC의 다른 곳에서'atom'과'word' 프로덕션을 재사용했기 때문에 주석과 공백을 인라인하는 기능이 함께 제공되었습니다. 그들은 이것이 나쁜 생각이라는 것을 빨리 깨달았고 RFC의 후속 개정에서 이들을 허용하지 않기 위해'dot-atom '생산을 도입했습니다. – dkarp

관련 문제