Was ist die maximale Länge des E-Mail-Betreffs?

227

Wie viele Zeichen dürfen in der Betreffzeile der Internet-E-Mail enthalten sein? Ich habe The RFC nach E-Mails durchsucht , konnte aber nicht genau sehen, wie lange es dauern durfte. Ich habe einen Kollegen, der dies programmgesteuert validieren möchte.

Wenn es keine formale Grenze gibt, welche gute Länge sollte in der Praxis vorgeschlagen werden?

Scott Ferguson
quelle
17
255 ist das Limit für einige Ticketing-Produkte (zum Beispiel Jira) und scheint das Limit für Outlook zu sein. Thunderbird und Google Mail scheinen nach 130
abzuschneiden
1
RFC2047 ist besser für die Validierung geeignet. Ich sehe viele Bulk-Mailing-Software, die ungültigen RFC2047-Inhalt produziert.
Jasen
3
In Datenbanken ist es sehr üblich (eine Tradition, die man sagen kann), die Länge nicht besonders langer oder kurzer Textfelder als VARCHAR (255) oder ähnliche äquivalente Namen zu definieren. Wenn eine längere Zeichenfolge angezeigt wird, wird ein Fehler generiert oder einfach bis zum Limit abgeschnitten. Aus diesem Grund unterstützen Jira und Outlook, wie hier erwähnt, keine weiteren Zeichen. Aus Kompatibilitätsgründen würde ich 255+ nicht empfehlen. Nur etwas Sahne auf den 5 Jahre alten Kuchen geben;)
Alph.Dev

Antworten:

195

Siehe RFC 2822 , Abschnitt 2.1.1 zum Starten.

Es gibt zwei Grenzen, die dieser Standard für die Anzahl der Zeichen in einer Zeile festlegt. Jede Zeichenzeile darf nicht mehr als 998 Zeichen enthalten und SOLLTE nicht mehr als 78 Zeichen enthalten, ausgenommen die CRLF.

Wie der RFC später feststellt, können Sie diese Grenze umgehen (nicht, dass Sie sollten), indem Sie den Betreff über mehrere Zeilen falten.

Jedes Header-Feld ist logischerweise eine einzelne Zeichenzeile, die den Feldnamen, den Doppelpunkt und den Feldkörper umfasst. Der Einfachheit halber und um die 998/78-Zeichenbeschränkungen pro Zeile zu bewältigen, kann der Feldkörperteil eines Kopffelds in eine Darstellung mit mehreren Zeilen aufgeteilt werden. Dies nennt man "Falten". Die allgemeine Regel lautet, dass überall dort, wo dieser Standard das Falten von Leerzeichen zulässt (nicht nur WSP-Zeichen), vor jedem WSP eine CRLF eingefügt werden kann. Zum Beispiel das Header-Feld:

       Subject: This is a test

kann dargestellt werden als:

       Subject: This
        is a test

Die Empfehlung für nicht mehr als 78 Zeichen in der Betreffzeile klingt vernünftig. Niemand möchte scrollen, um die gesamte Betreffzeile zu sehen, und rechts wird möglicherweise etwas Wichtiges abgeschnitten.

Michael Petrotta
quelle
8
Die aktuelle Version der IWF-Spezifikation, RFC 5322, finden Sie hier: tools.ietf.org/html/rfc5322#section-2.1.1
james.garriss
6
Diese Antwort bezieht sich nur auf die Zeilenlängenbeschränkung, nicht auf die Gesamtlängenbeschränkung.
Chalky
1
Es gibt RFC und es gibt Benutzerfreundlichkeit. Jakob Nielsen-Artikel E-Mail-Betreffzeilen: 5 Tipps, um Leser anzulocken, fassen zusammen: "Konzentrieren Sie sich auf die ersten 40 Zeichen. Beschreibende und gut geschriebene Betreffzeilen ermöglichen es den Empfängern, eine fundierte Entscheidung zu treffen, um weitere Details zu erhalten oder fortzufahren."
Édouard Lopez
3
Zur Verdeutlichung gibt es keine Längenbeschränkung für Betreffzeilen, da die Standards Header zulassen, die länger als 998 Byte sind, indem ein einzelner Header über so viele Zeilen gewickelt wird, wie Sie möchten. Die Empfehlung von ~ 80 Zeichen ist in der Tat vernünftig. Wenn Sie einen E-Mail-Client schreiben, müssen Sie in der Lage sein, mit lächerlich langen Themen umzugehen, ohne auf schreckliche Weise zu brechen, vorzugsweise durch Abschneiden, wenn Sie als Teil einer Liste angezeigt werden.
Thomasrutter
1
... Dies wäre auch bei jedem anderen Header-Feld der Fall (zB "From"). PS: Wenn Sie sich fragen, warum 78 statt 80 oder 998 statt 1000, liegt dies daran, dass der E-Mail-Standard CRLF (\ r \ n) als Trennzeichen angibt, dh zwei Bytes, was 1000 Bytes pro Zeile entspricht, von denen 998 ist der Header selbst. Beachten Sie auch, dass der Name der Kopfzeile und ein Leerzeichen nach dem Doppelpunkt, z. B. "Betreff:", ebenfalls dazu passen müssen.
Thomasrutter
20

RFC2322 besagt, dass der Betreff-Header "keine Längenbeschränkung hat".

Um jedoch lange Überschriften zu erstellen, müssen Sie diese auf mehrere Zeilen aufteilen. Dieser Vorgang wird als "Falten" bezeichnet.

Betreff ist in RFC 5322 als "unstrukturiert" definiert

Hier sind einige Zitate ([...] zeigen Dinge an, die ich weggelassen habe)

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
quelle
@jasen kennst du ein Werkzeug zum Falten?
Mahdi
Jede gut geschriebene E-Mail-Bibliothek wird dies tun. Mein Favorit istc-client
Jasen
Dies ist die richtige Antwort. Der 2. Teil der Frage "Gute Länge in der Praxis" hängt ganz von Ihrer App ab. Wenn Sie empfangene E-Mails speichern, müssen Sie unbegrenzte Längen unterstützen.
Rob
4

Nach einigen Tests: Wenn Sie eine E-Mail an einen Outlook-Client senden und der Betreff> 77 Zeichen beträgt und "=?ISO"innerhalb des Betreffs verwendet werden muss (in meinem Fall aufgrund von Akzenten), "schneidet" OutLook den Betreff in der Mitte von es und vernetzen Sie alles, was danach kommt, einschließlich Text, Anhänge usw. ... alles ein Netz!

Ich habe mehrere Beispiele wie dieses:

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

Zu:

Wie Sie sehen, wurde in der Betreffzeile auf Zeichen 78 mit einem "=" gefolgt von 2 oder 3 Zeilenvorschüben geschnitten und dann mit dem Rest des Betreffs schlecht fortgefahren.

Es wurde mir von mehreren Kunden berichtet, die alle OutLook verwenden, andere E-Mail-Clients beschäftigen sich mit diesen Themen in Ordnung.

Wenn Sie keine ISO haben, tut es nicht weh, aber wenn Sie es Ihrem Motiv hinzufügen, um RFC zu gefallen, erhalten Sie diese Überraschung von OutLook. Wenn Sie die ISOs nicht hinzufügen, wird dies von der iPhone-E-Mail nicht verstanden (und das Anhängen von Dateien mit Namen, die solche Zeichen verwenden, funktioniert auf iPhones nicht).

Sergio
quelle
5
Es gibt viele Probleme mit dem von Ihnen festgelegten Thema: 1. Leerzeichen sollten mit '_' codiert werden. 2. Ein 'codiertes Wort' (=? Zeichensatz? Q / B? Daten? =) Darf nicht länger als 75 Zeichen sein (rfc2047). 3. Sie können eine neue Zeile nicht mit '=' char am Ende der Zeile umgehen (die Header-QP-Codierung unterscheidet sich von der Body-QP). Fazit ist: Es ist nicht Outlooks Schuld.
Pawel Lesnikowski
2

Ich glaube nicht, dass es hier ein formales Limit gibt, und ich bin mir ziemlich sicher, dass es auch im RFC kein festes Limit gibt, wie Sie festgestellt haben.

Ich denke, dass einige ziemlich häufige Einschränkungen für Betreffzeilen im Allgemeinen (nicht nur E-Mail) sind:

  • 80 Zeichen
  • 128 Zeichen
  • 256 Zeichen

Offensichtlich möchten Sie sich etwas einfallen lassen, das vernünftig ist. Wenn Sie einen E-Mail-Client schreiben, sollten Sie etwa 256 Zeichen verwenden und offensichtlich gründlich gegen große kommerzielle Server testen, um sicherzustellen, dass diese Ihre E-Mails korrekt bedienen.

Hoffe das hilft!

Ed Altorfer
quelle
13
Es gibt keinen besonderen Grund, warum 256 besser als 250, 300 oder 372 ist. Wir haben längst keine Bytes mehr für Zeichenfolgenlängen verwendet.
Greg Hewgill
4
255 ist die tatsächliche Grenze für einige Produkte (Jira und Outlook zum Beispiel)
Reconbot
5
Diese Antwort ist falsch. RFC 5322, die aktuelle Version der IWF-Spezifikation, definiert eindeutig eine maximale Zeilenlänge. Siehe @ Michaels Antwort.
James.garriss
2
+1 Die Zeilenlängenbeschränkung gilt für alle Zeilen der Nachricht, aber ich sehe nichts, was besagt, dass ein Betreff nicht mehrere Zeilen umfassen kann (was bedeutet, dass die Anzahl der Zeichen für den Betreff nicht begrenzt ist). Siehe 2.2.3 und das unmittelbar darauf folgende Beispiel.
Cypher
1
VARCHAR 255 ist wahrscheinlich die häufigste (und effizienteste) Datenspaltenlänge in MySQL / MariaDB. Bytes sind mit Sicherheit immer noch relevant. MySQL verwendet 1 Byte, um die Länge zu speichern, wenn sie weniger als 256 oder anderweitig mehr beträgt. Sehen Sie sich an, wie C ++ std :: string implementiert, wenn Sie der Meinung sind, dass Stringlängen nicht sehr wichtig sind und in Bytes gezählt werden.
Ebyrob
0

Wichtig ist, welchen Mechanismus Sie zum Senden der E-Mail verwenden. Die meisten modernen Bibliotheken (dh System.Net.Mail) verbergen die Faltung vor Ihnen. Sie haben gerade eine sehr lange Betreffzeile für E-Mails ohne (CR, LF, HTAB) eingegeben. Wenn Sie versuchen, Ihr eigenes Folding durchzuführen, sind alle Wetten ungültig. Es werden Fehler gemeldet. Wenn Sie dieses Problem haben, filtern Sie einfach CR, LF, HTAB heraus und lassen Sie die Bibliothek die Arbeit für Sie erledigen. Normalerweise können Sie den Codierungstexttyp auch als separates Feld festlegen. Keine Iso-Codierung in der Betreffzeile erforderlich.

kariato
quelle