E-posta konusu uzunluk sınırı nedir?


227

İnternet e-postasının konu satırında kaç karakter olmasına izin verilir? E-posta için RFC taraması yaptım ama ne kadar sürmesine izin verildiğini özellikle göremedim. Programlı olarak doğrulamak isteyen bir meslektaşım var.

Resmi bir sınır yoksa, pratikte önerilecek iyi bir uzunluk nedir?


17
255, bazı biletleme ürünlerinde (örneğin Jira) bir sınırdır ve görünüm, şimşek
kuşu ve gmail'deki sınır 130'dan

1
RFC2047 doğrulama için daha uygundur, geçersiz RFC2047 içeriği üreten çok sayıda toplu posta yazılımı görüyorum.
Jasen

3
Veritabanlarında VARCHAR (255) veya benzer eşdeğer adlar olarak özellikle uzun veya kısa olmayan metin alanlarının uzunluğunu tanımlamak çok yaygındır (söyleyebileceğiniz bir gelenek). Daha uzun bir dize sunulursa, bir hata oluşturur veya basitçe sınıra kesilir. Bu yüzden Jira ve Outlook burada belirtildiği gibi daha fazla karakteri desteklemez. Uyumluluk nedenlerinden dolayı ben 255+ tavsiye etmem Sadece 5 yaşındaki kek üzerine biraz krema ekleyerek;)
Alph.Dev

Yanıtlar:


195

Başlamak için bkz. RFC 2822 , bölüm 2.1.1.

Bu standardın bir satırdaki karakter sayısına yerleştirdiği iki sınır vardır. Her karakter satırı 998 karakterden fazla olmamalıdır ve CRLF hariç 78 karakterden fazla olmamalıdır.

RFC'nin daha sonra belirttiği gibi, konuyu birden çok satıra katlayarak bu sınırın üstesinden gelebilirsiniz (yapmanız gerekmez).

Her başlık alanı, mantıksal olarak alan adı, iki nokta üst üste ve alan gövdesini içeren tek bir karakter dizisidir. Bununla birlikte, kolaylık sağlamak ve satır başına 998/78 karakter sınırlamalarını ele almak için, bir başlık alanının alan gövdesi bölümü çok satırlı bir temsile bölünebilir; buna "katlama" denir. Genel kural, bu standardın beyaz alan katlanmasına izin verdiği her yerde (sadece WSP karakterleri değil), herhangi bir WSP'den önce bir CRLF eklenebilmesidir. Örneğin, başlık alanı:

       Subject: This is a test

şu şekilde temsil edilebilir:

       Subject: This
        is a test

Konu başlığında en fazla 78 karakter olması önerisi makul görünebilir. Kimse tüm konu satırını görmek için kaydırmak istemez ve önemli bir şey sağdan kesilebilir.


8
IMF spesifikasyonunun güncel sürümü, RFC 5322, burada bulunabilir: tools.ietf.org/html/rfc5322#section-2.1.1
james.garriss

6
Bu cevap, toplam uzunluk sınırını değil, yalnızca satır uzunluğu sınırını ele alır.
Chalky

1
RFC var ve kullanılabilirlik var. Jakob Nielsen makalesi E-posta Konu Satırları: Okuyucuları Çekmek için 5 İpucu şöyle özetliyor: "İlk 40 karaktere odaklanın. Açıklayıcı ve iyi yazılmış konu satırları, alıcıların daha fazla bilgi almak veya devam etmek için bilinçli bir karar vermelerini sağlar."
Édouard Lopez

3
Açıklığa kavuşturmak için, konu satırları için uzunluk sınırı yoktur, çünkü standartlar 998 bayttan daha uzun başlıklara tek bir başlığı istediğiniz kadar sararak izin verir. ~ 80 karakterlik tavsiye gerçekten mantıklıdır. Bir e-posta istemcisi yazıyorsanız size sahip bir listesinin bir parçası olarak gösterilirken kesilmesiyle tercihen korkunç bir şekilde kırmadan gülünç uzun konularla ile baş edebilmek için.
thomasrutter

1
... Bu, diğer herhangi bir üstbilgi alanında da geçerlidir (örneğin, "Kimden"). PS neden 80 yerine 78 veya neden 1000 yerine 998 olduğunu merak ediyorsanız, bunun nedeni e-posta standardının ayırıcı olarak CRLF (\ r \ n) belirtmesidir; başlığın kendisi. Ayrıca başlığın adı ve iki nokta üst üste işaretinden sonra gelen herhangi bir alanın, örneğin "Konu:" da buna uyması gerektiğini unutmayın.
thomasrutter

20

RFC2322, konu başlığının "uzunluk kısıtlaması olmadığını" belirtir

ancak uzun başlıklar oluşturmak için, ancak bunu "katlama" adı verilen bir işlemi birden çok satıra bölmeniz gerekir.

konu RFC 5322'de "yapılandırılmamış" olarak tanımlandı

İşte bazı alıntılar ([...] atladığım şeyleri gösteriyor)

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 katlama aracı biliyor musunuz?
Mehdi

iyi yazılmış herhangi bir e-posta kütüphanesi bunu yapar. benim favorimc-client
Jasen

Bu doğru cevap. "Uygulamada iyi uzunluk" sorusunun 2. bölümü tamamen uygulamanıza bağlıdır. Alınan e-postaları kaydediyorsanız, sınırsız uzunlukları desteklemeniz gerekir.
Rob

4

bazı testlerden sonra: Bir outlook istemcisine e-posta gönderirseniz ve konu> 77 karakterden "=?ISO"oluşuyorsa ve konunun içinde kullanılması gerekiyorsa (benim durumumda aksanlar nedeniyle) o zaman OutLook konunun ortasında "keser" ve gövde metni, ekler, vb. dahil olmak üzere gelen her şeyi mesh edin ... hepsi bir kafes!

Bunun gibi birkaç örnek var:

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

Kime:

Gördüğünüz gibi, konu satırında char 78 üzerinde "=" ve ardından 2 veya 3 satır besleme ile kesilmiş, daha sonra konunun geri kalanı kötü bir şekilde devam etmiştir.

OutLook'u kullanan diğer müşterilerden, diğer e-posta istemcileri bu konularla ilgilenen birkaç müşteriden bana bildirildi.

Üzerinde ISO yoksa, zarar vermez, ancak konunuza RFC'ye iyi gelmesi için eklerseniz, bu sürprizi OutLook'tan alırsınız. ISO'ları eklemezseniz, iPhone e-postası onu anlamaz (ve bu karakterleri kullanan adlara sahip dosyaları iPhone'larda çalışmaz).


5
Ayarladığınız konuyla ilgili birçok sorun var: 1. Boşluklar '_' ile kodlanmalıdır, 2. 'Kodlanmış sözcük' (=? Karakter kümesi? Q / B? Veri? =) 75 karakterden uzun olamaz (rfc2047). 3. Satırın sonunda '=' karakter ile yeni satırdan kaçamazsınız (başlık QP kodlaması gövde QP'sinden farklıdır). Alt satırda: Outlook'un hatası değil.
Pawel Lesnikowski

2

Burada resmi bir sınır olduğuna inanmıyorum ve bulduğunuz gibi RFC'de de herhangi bir sabit sınır olmadığından eminim.

Genel olarak konu satırları (sadece e-posta değil) için oldukça yaygın bazı sınırlamalar olduğunu düşünüyorum:

  • 80 Karakter
  • 128 Karakter
  • 256 Karakter

Açıkçası, makul bir şey bulmak istersiniz. Bir e-posta istemcisi yazıyorsanız, 256 karakter gibi bir şeyle gidip, postalarınızı doğru bir şekilde sunduğundan emin olmak için büyük ticari sunuculara karşı kapsamlı bir şekilde test etmek isteyebilirsiniz.

Bu yardımcı olur umarım!


13
256'nın 250, 300 veya 372'den daha iyi olmasının özel bir nedeni yoktur. Uzun bir süre için dize uzunlukları için bayt kullanmaktayız.
Greg Hewgill

4
255 asıl bazı ürünlerde sınırı (Jira ve örneğin görünüm) olduğu
reconbot

5
Bu cevap yanlış. IMF spesifikasyonunun mevcut versiyonu olan RFC 5322, maksimum bir hat uzunluğunu açıkça tanımlar. Bakınız Michael'ın cevabı.
james.garriss

2
+1 Satır uzunluğu sınırlaması iletinin tüm satırları içindir, ancak bir konunun birden çok satır içeremeyeceğini söyleyen hiçbir şey görmüyorum (konu için karakter sayısında bir sınırlama yoktur). Bkz. 2.2.3 ve hemen sonrasında gelen örnek.
Cypher

1
VARCHAR 255 muhtemelen MySQL / MariaDB'deki en yaygın (ve daha verimli) veri sütunu uzunluğudur. Baytlar kesinlikle önemlidir. MySQL, 256'dan küçükse uzunluğu saklamak için 1 bayt kullanır, aksi takdirde. Dize uzunluklarının çok önemli olmadığını ve bayt olarak sayıldığını düşünüyorsanız, C ++ 'nın std :: string'i nasıl uyguladığına bir göz atın.
ebyrob

0

Önemli olan e-postayı göndermek için hangi mekanizmayı kullandığınızdır. Çoğu modern kütüphane (örn. System.Net.Mail) katlamayı sizden gizleyecektir. Çok uzun bir e-posta konu satırı (CR, LF, HTAB) olmadan koydunuz. Kendi katlama işleminizi yapmaya başlarsanız tüm bahisler kapanır. Hataları bildirmeye başlayacaktır. Bu sorunu yaşıyorsanız, CR, LF, HTAB'ı filtreleyin ve kütüphanenin işi sizin için yapmasına izin verin. Genellikle kodlama metin türünü ayrı bir alan olarak da ayarlayabilirsiniz. Konu satırında iso kodlamasına gerek yoktur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.