什么是电子邮件主题长度限制?

互联网电子邮件主题栏允许有多less个字符? 我扫描了RFC的电子邮件,但不能具体看到它被允许多长时间。 我有一个想通过编程validation的同事。

如果没有正式的限制,在实践中有什么好的build议? 干杯,

请参阅RFC 2822 ,第2.1.1节开始。

这个标准对于一行中的字符数有两个限制。 每行字符必须不超过998个字符,不应超过78个字符,不包括CRLF。

如RFC稍后所述,您可以通过将主题折叠多行来解决此限制(而不是您应该这样做)。

每个标题字段在逻辑上是由字段名称,冒号和字段正文组成的一行字符。 然而,为了方便起见,为了处理每行998/78字符限制,可以将头字段的字段主体部分拆分成多行表示; 这被称为“折叠”。 一般规则是,只要本标准允许折叠空白(不是简单的WSP字符),就可以在任何WSP之前插入CRLF。 例如,标题字段:

Subject: This is a test 

可以表示为:

  Subject: This is a test 

标题中不超过78个字符的build议听起来很合理。 没有人想滚动查看整个主题,重要的东西可能会被切断。

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. 

经过一些testing:如果您发送电子邮件到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电子邮件将无法理解它(并且使用此类字符附加具有名称的文件在iPhones上不起作用)。

我不相信这里有一个正式的限制,我敢肯定在RFC中没有任何硬限制,正如你发现的那样。

我认为一般的主题(不仅仅是电子邮件)的一些相当普遍的限制是:

  • 80个字符
  • 128个字符
  • 256个字符

显然,你想要拿出一些合理的东西。 如果您正在编写电子邮件客户端,则可能需要使用256个字符,而且显然需要对大型商业服务器进行彻底testing,以确保其正确地提供邮件。

希望这可以帮助!