이메일 제목 길이 제한은 무엇입니까?


227

인터넷 이메일의 제목 줄에는 몇 문자를 사용할 수 있습니까? 이메일대한 RFC 스캔이 있었지만 그것이 얼마나 오래 허용되었는지는 구체적으로 알 수 없었습니다. 프로그래밍 방식으로 유효성을 검사하려는 동료가 있습니다.

공식적인 제한이 없다면 실제로 제안 할만한 좋은 길이는 무엇입니까?


17
255는 일부 발권 제품 (예 : Jira)의 한도이며, 전망에 대한 한도 인 것 같습니다. 썬더 버드와 Gmail은 130
reconbot

1
RFC2047은 유효성 검사에 더 적합합니다. 잘못된 RFC2047 콘텐츠를 생성하는 대량 메일 소프트웨어가 많이 있습니다.
Jasen

3
데이터베이스에서 특별히 길거나 짧은 텍스트 필드의 길이를 VARCHAR (255) 또는 이와 동등한 이름으로 정의하는 것은 매우 일반적입니다. 더 긴 문자열이 표시되면 오류가 발생하거나 한계까지 잘립니다. 그렇기 때문에 여기에 언급 된 Jira와 Outlook은 더 많은 문자를 지원하지 않습니다. 호환성을 위해 255+를 권장하지 않습니다. 5 살짜리 케이크에 크림을 조금만 첨가하십시오.)
Alph.Dev

답변:


195

시작하려면 RFC 2822 섹션 2.1.1을 참조하십시오 .

이 표준은 한 줄의 문자 수에 두 가지 한계가 있습니다. 각 문자 줄은 998 자 이하 여야하며 CRLF를 제외하고 78 자 이하 여야합니다.

RFC가 나중에 설명 하듯이 여러 줄로 주제를 접 으면이 한계를 극복 할 수 있습니다 (필수 아님).

각 헤더 필드는 논리적으로 필드 이름, 콜론 및 필드 본문을 포함하는 한 줄의 문자입니다. 그러나 편의상 그리고 라인 당 998/78 문자 제한을 처리하기 위해 헤더 필드의 필드 본문 부분을 여러 줄 표현으로 나눌 수 있습니다. 이것을 "폴딩"이라고합니다. 일반적인 규칙은이 표준이 공백 (WSP 문자가 아닌)을 접을 수있는 곳이면 WSP 앞에 CRLF를 삽입 할 수 있다는 것입니다. 예를 들어 헤더 필드는 다음과 같습니다.

       Subject: This is a test

다음과 같이 나타낼 수 있습니다.

       Subject: This
        is a test

제목 헤더에 78자를 넘지 않는 것이 좋습니다. 아무도 제목 전체를보기 위해 스크롤하기를 원하지 않으며 중요한 부분이 오른쪽에서 잘릴 수 있습니다.


8
IMF 사양의 현재 버전 인 RFC 5322는 다음에서 찾을 수 있습니다. tools.ietf.org/html/rfc5322#section-2.1.1
james.garriss

6
이 답변은 전체 길이 제한이 아닌 줄 길이 제한 만 다룹니다.
Chalky

1
RFC가 있고 사용성이 있습니다. Jakob Nielsen 기사 전자 메일 제목 줄 : 독자를 유치하기위한 5 가지 팁 독자 는 다음과 같이 요약합니다. "처음 40 자에 초점을 맞 춥니 다. 설명적이고 잘 작성된 제목 줄을 사용하면 자세한 정보를 얻거나 계속 진행할 수 있습니다."
Édouard Lopez

3
명확히하기 위해 표준은 단일 헤더를 원하는 수만큼 줄로 묶어 998 바이트보다 긴 헤더를 허용하므로 제목 줄의 길이 제한이 없습니다. ~ 80 자의 권장 사항은 실제로 합리적인 것입니다. 당신은 이메일 클라이언트를 작성하는 경우에 당신은 목록의 일부로 표시 할 때 절단에 의해 바람직하게는, 끔찍한 방법으로 파괴하지 않고 터무니없이 긴 주제에 대처 할 수 있도록.
thomasrutter

1
... 다른 헤더 필드도 마찬가지입니다 (예 : "보낸 사람"). 추신 : 80이 아닌 78이 왜 1000이 아닌 998인지 궁금하다면 이메일 표준이 CRLF (\ r \ n)를 2 바이트 인 구분 기호로 지정하기 때문입니다. 헤더 자체. 헤더의 이름과 콜론 뒤의 공백 (예 : "제목 :")도 여기에 맞아야합니다.
thomasrutter

20

RFC2322에 따라 제목 헤더에 "길이 제한이 없습니다"

그러나 긴 헤더를 만들려면 "폴딩"이라는 프로세스를 여러 줄로 분할해야합니다.

주제는 RFC 5322에서 "구조화되지 않은"것으로 정의됩니다.

여기에 따옴표가 있습니다 ([...]는 내가 생략 한 것을 나타냅니다)

3.6.5. Informational Fields
  The informational fields are all optional.  The "Subject:" and
  "Comments:" fields are unstructured fields as defined in section
  2.2.1, [...]

2.2.1. Unstructured Header Field Bodies
  Some field bodies in this specification are defined simply as
  "unstructured" (which is specified in section 3.2.5 as any printable
  US-ASCII characters plus white space characters) with no further
  restrictions.  These are referred to as unstructured field bodies.
  Semantically, unstructured field bodies are simply to be treated as a
  single line of characters with no further processing (except for
  "folding" and "unfolding" as described in section 2.2.3).

2.2.3  [...]  An unfolded header field has no length restriction and
  therefore may be indeterminately long.

@jasen 당신은 접는 도구를 알고 있습니까?
mahdi

잘 작성된 이메일 라이브러리가이 작업을 수행합니다. 내가 가장 좋아하는 것은c-client
Jasen

이것이 정답입니다. "실제로 좋은 길이"라는 질문의 두 번째 부분은 전적으로 앱에 따라 다릅니다. 받은 이메일을 저장하는 경우 무제한 길이를 지원해야합니다.
Rob

4

일부 테스트 후 : Outlook 클라이언트에게 전자 메일을 보내고 제목이> 77 자이고 "=?ISO"제목 (제 경우 악센트로 인해) 내에서 사용해야 하는 경우 OutLook은 중간에 제목을 "잘라냅니다" 본문 텍스트, 첨부 파일 등 모든 메쉬를 포함하여 이후의 모든 것을 메쉬합니다!

이 같은 몇 가지 예가 있습니다.

Subject: =?ISO-8859-1?Q?Actas de la obra N=BA.20100154 (Expediente N=BA.20100182) "NUEVA RED FERROVIARIA.=

TRAMO=20BEASAIN=20OESTE(Pedido=20PC10/00123-125),=20BEASAIN".?=

에:

보시다시피 제목 줄에서 문자 = 78로 "="다음에 2 개 또는 3 개의 줄 바꿈 문자를 잘라낸 다음 나머지 제목을 잘못 사용했습니다.

OutLook을 사용하는 모든 고객, 다른 이메일 클라이언트가 해당 주제를 처리하는 여러 고객으로부터 나에게보고되었습니다.

ISO가 없으면 상처를 입지 않지만 RFC에 적합하도록 피사체에 추가하면 OutLook 에서이 놀람을 얻습니다. ISO를 추가하지 않으면 iPhone 전자 메일에서 ISO 전자 메일을 이해하지 못합니다 (해당 문자를 사용하는 이름을 가진 파일 첨부는 iPhone에서 작동하지 않음).


5
설정 한 주제에는 많은 문제가 있습니다. 1. 공백은 '_'로 인코딩해야합니다. 2. '인코딩 된 단어'(=? charset? Q / B? data? =)는 75자를 초과 할 수 없습니다. (rfc2047). 3 줄 끝에서 '='문자를 사용하여 줄 바꿈을 피할 수 없습니다 (헤더 QP 인코딩이 본문 QP와 다릅니다). 결론은 Outlook의 결함이 아닙니다.
Pawel Lesnikowski

2

나는 여기에 공식적인 한계가 있다고 생각하지 않으며, RFC에도 하드 한계가 지정되어 있지 않다고 확신합니다.

전자 메일뿐만 아니라 일반적인 제목 줄에 대한 일반적인 제한 사항은 다음과 같습니다.

  • 80 자
  • 128 자
  • 256 자

분명히, 당신은 합리적인 무언가를 생각해 내고 싶습니다. 전자 메일 클라이언트를 작성하는 경우 256 자 정도를 사용하고 큰 상용 서버에 대해 철저히 테스트하여 메일을 올바르게 제공하는지 확인하십시오.

도움이 되었기를 바랍니다!


13
256이 250, 300 또는 372보다 나은 이유는 없습니다. 문자열 길이에 바이트를 사용하는 것은 오래되었습니다.
Greg Hewgill

4
255는 일부 제품의 실제 제한입니다 (예 : Jira 및 전망)
reconbot

5
이 답변은 잘못되었습니다. 현재 IMF 사양 버전 인 RFC 5322는 최대 라인 길이를 명확하게 정의합니다. @Michael의 답변을 참조하십시오.
james.garriss

2
+1 줄 길이 제한은 메시지의 모든 줄에 적용되지만 제목이 여러 줄에 걸쳐있을 수 없다는 내용은 보이지 않습니다 (제목의 문자 수에는 제한이 없음). 2.2.3 및 바로 다음에 나오는 예제를 참조하십시오.
Cypher

1
VARCHAR 255는 아마도 MySQL / MariaDB에서 가장 일반적이고 더 효율적인 데이터 열 길이 일 것입니다. 바이트는 여전히 가장 관련성이 있습니다. MySQL은 길이가 256보다 작 으면 1 바이트를 사용하여 길이를 저장합니다. 문자열 길이가 중요하지 않고 바이트 단위로 계산된다고 생각되면 C ++에서 std :: string을 구현하는 방법을 살펴보십시오.
ebyrob

0

중요한 것은 이메일을 보내는 데 사용하는 메커니즘입니다. 대부분의 최신 라이브러리 (예 : System.Net.Mail)는 접기를 숨 깁니다. (CR, LF, HTAB)없이 매우 긴 이메일 제목을 입력하면됩니다. 자신의 접는 것을 시작하면 모든 베팅이 해제됩니다. 오류보고가 시작됩니다. 따라서이 문제가 발생하면 CR, LF, HTAB을 필터링하고 라이브러리가 작동하도록하십시오. 일반적으로 인코딩 텍스트 유형을 별도의 필드로 설정할 수도 있습니다. 제목 줄에 ISO 인코딩이 필요하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.