2009-10-20 629 views
178

互聯網電子郵件的主題行中允許有多少個字符? 我掃描了The RFC for email,但無法具體查看允許的時間。 我有一個想以編程方式驗證它的同事。什麼是電子郵件主題長度限制?

如果沒有正式限制,實踐中建議的長度是多少? 乾杯,

+9

255是一些票務產品的限制(吉拉例如)並且似乎是outlook的限制,thunderbird和gmail似乎在130之後截斷。 – reconbot 2011-01-12 15:39:40

+0

RFC2047更適合驗證,我看到很多批量郵件軟件會產生無效的RFC2047內容。 – Jasen 2014-08-08 00:37:09

+1

在數據庫中,非常常見(可以說是一種傳統),將不特別長或短的文本字段的長度定義爲VARCHAR(255)或類似的等效名稱。如果呈現更長的字符串,則會產生錯誤或者僅僅被截斷到極限。這就是爲什麼這裏提到的Jira和Outlook不支持更多字符的原因。爲了兼容性的原因,我不推薦255+ 只需在5歲的蛋糕上添加一些面霜;) – 2014-12-09 11:11:35

回答

158

請參閱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個字符的建議聽起來很合理。沒有人想滾動查看整個主題行,而重要的東西可能會被切斷。

+7

當前版本的IMF規範RFC 5322可以在這裏找到:http://tools.ietf.org/html/rfc5322#section-2.1.1 – 2012-11-27 15:37:42

+0

隨機更新...gmail根據屏幕寬度和可用空間自動換行。 (非78個字符) – CasualT 2015-06-26 20:28:29

+2

此答案只針對線長度限制,而不是整體長度限制。 – Chalky 2015-11-11 20:11:15

0

我不認爲這裏有一個正式的限制,而且我敢肯定在RFC中沒有任何硬限制,正如你發現的那樣。

我認爲,對於一般的主題行一些很常見的限制(而不僅僅是電子郵件)是:

  • 80個字符
  • 128個字符
  • 256個字符

顯然,你想拿出一些合理的東西。如果你正在編寫一個電子郵件客戶端,你可能想要使用類似256個字符的東西,而且顯然要對付大型商業服務器,以確保它們正確地爲你的郵件提供服務。

希望這會有所幫助!

+12

沒有什麼特別的理由說明爲什麼256比250或300或者372更好。我們早已將字節用於字符串長度。 – 2009-10-20 03:46:50

+0

我同意你的實際用途,但我認爲256比你提到的其他一些選項更好,因爲它與其他產品更一致。 – 2009-10-20 04:37:16

+3

255是一些產品的實際限制(例如Jira和Outlook) – reconbot 2011-01-12 15:37:31

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".?= 

到:

正如所看到的,在主題行它板缺對char 78用「=」隨後加入2或3線供給然後繼續討論其他主題。

這是從幾個客戶誰使用OutLook,其他電子郵件客戶端處理這些主題的報告給我好。

如果你沒有ISO,它不會受到傷害,但是如果你將它添加到你的主題以便對RFC更好,那麼你會從OutLook中獲得這個驚喜。如果你不添加ISO,那麼iPhone電子郵件將無法理解它(並且使用這些字符附加名稱的文件在iPhones上不起作用)。

+5

您設置的主題有許多問題:1.空格應該用'_'編碼,2.'編碼字'(=?字符集?Q/B?數據?=)不得超過75個字符長(rfc2047)。第3行你不能在行尾使用'='字符來換行(頭部QP編碼與身體QP不同)。底線是:這不是Outlook的錯。 – 2012-11-30 12:38:16

8

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. 
+0

這是正確的。 – Chalky 2015-11-11 20:14:21

+0

@jasen你知道摺疊的工具嗎? – 2016-07-09 08:12:26

+0

任何寫得好的電子郵件庫都會這樣做。我最喜歡的是'c-client' – Jasen 2016-07-09 08:41:37