メールの件名の長さ制限とは何ですか?


227

インターネットメールの件名には何文字まで含めることができますか?私は電子メールのためにRFCをスキャンしましたが、許可されている期間を具体的に確認できませんでした。プログラムでそれを検証したい同僚がいます。

正式な制限がない場合、実際にはどのくらいの長さが推奨されますか?


17
255は、いくつかの発券製品の制限を(Jiraの例)であるとの見通しの上限のようです、ThunderbirdとGmailの130の後に切り捨てるように見える
reconbot

1
RFC2047は検証により適しています。大量のメール送信ソフトウェアが無効なRFC2047コンテンツを生成しているのがわかります。
Jasen 2014

3
データベースでは、特に長くない、または短いテキストフィールドの長さをVARCHAR(255)または同様の同等の名前として定義することは非常に一般的です(あなたが言える伝統です)。より長い文字列が提示されると、エラーが発生するか、単に制限に切り捨てられます。そのため、ここで説明したJiraとOutlookは、これ以上の文字をサポートしていません。互換性の理由から、255歳以上はお勧めしません。5歳のケーキにクリームを加えるだけです;)
Alph.Dev

回答:


195

開始するには、RFC 2822のセクション2.1.1を参照してください。

この標準では、1行の文字数に2つの制限があります。文字の各行は998文字以下である必要があり、CRLFを除いて78文字以下である必要があります。

RFCが後で述べるように、件名を複数行に折り返すことで、この制限を回避できます(そうする必要はありません)。

各ヘッダーフィールドは、論理的には、フィールド名、コロン、フィールド本文を構成する1行の文字です。ただし、便宜上、1行あたりの998/78文字の制限に対処するために、ヘッダーフィールドのフィールド本体部分を複数行の表現に分割できます。これは「折りたたみ」と呼ばれます。一般的な規則は、この標準で空白の折りたたみが可能な場合(WSP文字だけでなく)、WLFの前にCRLFを挿入することです。たとえば、ヘッダーフィールド:

       Subject: This is a test

次のように表すことができます:

       Subject: This
        is a test

件名のヘッダーに78文字以下の推奨事項は妥当に聞こえます。誰もがスクロールして件名全体を表示することを望んでおらず、重要なものが右側で途切れる場合があります。


8
IMF仕様の現在のバージョンであるRFC 5322は次の場所に
james.garriss

6
この回答は、全体の長さの制限ではなく、行の長さの制限のみを扱います。
チョーキー2015

1
RFCと使いやすさがあります。ジェイコブニールセンの記事メールの件名:読者を惹きつける5つのヒント要約すると、「最初の40文字に焦点を当てます。説明がよく書かれた件名行により、受信者は情報を得て詳細を判断したり先に進んだりできます。」
エドゥアールロペス2016年

3
明確にするために、標準では、単一のヘッダーを必要な数の行に折り返すことにより、998バイトを超えるヘッダーを許可するため、件名行の長さに制限はありません。〜80文字の推奨は確かに妥当なものです。電子メールクライアントを作成している場合は、ひどく長い方法で途切れることなく、できればリストの一部として表示するときに切り捨てることによって、途方もなく長い件名に対処できる必要あります。
thomasrutter 2017

1
...これは他のヘッダーフィールドにも当てはまります(「From」など)。PSなぜ80ではなく78なのか、なぜ1000ではなく998なのか疑問に思っている場合、それはメールの標準で2バイトのCRLF(\ r \ n)がセパレーターとして指定されているためです。ヘッダー自体。また、ヘッダーの名前とコロンの後のスペース、たとえば "Subject:"もこれに収まる必要があることに注意してください。
thomasrutter 2017

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

これが正解です。「実際の長さ」という質問の2番目の部分は、完全にアプリに依存します。受信したメールを保存する場合は、無制限の長さをサポートする必要があります。
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".?=

に:

ご覧のように、件名の行では、「=」とそれに続く2行または3行の改行で文字78が切り取られ、残りの件名が問題なく続けられました。

OutLookを使用するすべての場所で、他の電子メールクライアントがそれらの問題に対処しているいくつかの顧客から私に報告されました。

ISOがなくても問題ありませんが、件名に追加してRFCに適したものにすると、OutLookからこの驚きが得られます。ISOを追加しないと、iPhoneのメールはそれを理解できません(そのような文字を使用した名前のファイルを添付すると、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より優れている特別な理由はありません。文字列の長さとしてバイトを使用するのはずっと前からです。
グレッグ・ヒューギル09/10/20

4
一部の製品(
Jira

5
この答えは間違っています。IMF仕様の現在のバージョンであるRFC 5322は、最大行長を明確に定義しています。@Michaelの回答を参照してください。
james.garriss

2
+1行の長さの制限はメッセージのすべての行に対するものですが、件名を複数行にまたがることができないというメッセージは表示されません(つまり、件名の文字数に制限がないことを意味します)。2.2.3とその直後の例を参照してください。
サイファー、2014年

1
VARCHAR 255は、おそらくMySQL / MariaDBで最も一般的な(そしてより効率的な)データ列の長さです。バイトは依然として最も重要です。MySQLは、長さが256未満の場合は1バイト、それ以外の場合は1バイトを格納します。文字列の長さがそれほど重要ではなく、バイトでカウントされていると思われる場合は、C ++がどのようにstd :: stringを実装するかを見てください。
ebyrob 2017年

0

重要なのは、メールの送信に使用するメカニズムです。最近のほとんどのライブラリ(System.Net.Mailなど)は、折りたたみを隠します。非常に長いメールの件名を(CR、LF、HTAB)なしで挿入しました。自分でフォールディングを始めようとすると、すべてのベットがオフになります。エラーの報告を開始します。したがって、この問題が発生している場合は、CR、LF、HTABを除外して、ライブラリーに処理を任せます。通常、エンコードテキストタイプを別のフィールドとして設定することもできます。件名にISOエンコードの必要はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.