Jaka jest maksymalna długość prawidłowego adresu e-mail?

986

Jaka jest maksymalna długość prawidłowego adresu e-mail? Czy jest to zdefiniowane przez jakikolwiek standard?

lotny
źródło
Jaki rodzaj adresu e-mail? Internet, X.400 lub inny?
Toby Speight
Pamiętaj, że limit długości, jaki powinna nałożyć Twoja aplikacja na adresy e-mail, może nie być taki sam jak teoretyczne maksimum (które jest dłuższe niż cały komentarz ). Inne odpowiedzi omawiają to pytanie, np .: stackoverflow.com/questions/1297272
MGOwen

Odpowiedzi:

1205

Adres e-mail nie może przekraczać 254 znaków.

Zostało to zaakceptowane przez IETF po złożeniu erraty . Pełna diagnoza dowolnego adresu jest dostępna online . Oryginalna wersja RFC 3696 opisała 320 jako maksymalną długość, ale John Klensin następnie zaakceptował niepoprawną wartość, ponieważ Ścieżka jest zdefiniowana jako

Path = "<" [ A-d-l ":" ] Mailbox ">"

Tak więc element Mailbox (tj. Adres e-mail) ma nawiasy kątowe wokół niego, aby utworzyć ścieżkę, której maksymalna długość wynosi 254 znaki, aby ograniczyć długość ścieżki do 256 znaków lub mniej.

Maksymalna długość określona w RFC 5321 stanowi:

Maksymalna łączna długość ścieżki zwrotnej lub ścieżki do przodu wynosi 256 znaków.

RFC 3696 został tutaj poprawiony .

Ludzie powinni być świadomi erraty w szczególności przeciwko RFC 3696 . Trzy z kanonicznych przykładów są w rzeczywistości nieprawidłowymi adresami.

Zebrałem kilkaset adresów testowych, które można znaleźć na stronie http://www.dominicsayers.com/isemail

Dominic Sayers
źródło
7
Co z nowym standardem RFC, który zezwala na Unicode w adresach e-mail?
Pacerier,
3
Ile znaków przed @ i ile później, czy to nie ma znaczenia?
systemovich,
5
@Lodewijk RFC 3696 nie jest standardem, po prostu stara się pomóc ludziom w prawidłowej interpretacji podstawowych standardów. Niestety, próbując wyjaśnić sytuację, Klensin uwzględnił kilka poważnych błędów, które zostały poprawione w Erracie. Ale nikt nie czyta erraty, więc, jak na ironię, RFC 3693 okazuje się bardzo nieprzydatny.
Dominic Sayers,
3
Uważam, że w przypadku międzynarodowych adresów e-mail bardziej poprawne byłoby zdefiniowanie limitu jako 254 oktetów , a nie znaków. Ale nie jestem pewien. RFC 6531 rozszerza ścieżkę do tyłu i do przodu RFC 5321, aby umożliwić znaki UTF-8, ale RFC 5321 wyraźnie mówi, że limit to „256 oktetów”, w tym separatory (celowa zmiana w stosunku do RFC 2821, która mówiła „znaki”). Uważam, że limit 256 oktetów (minus 2 dla 254) nie jest zastępowany, a efektywny limit znaków jest zmniejszony dla adresów ze znakami wielobajtowymi UTF-8.
Andre D,
1
@JohnLBevan, ponieważ domeny są używane do innych celów niż e-maile i są zdefiniowane przez różne RFC. Jestem pewien, że Jon Postel żałował, że nie może być bardziej spójny, ale w tym czasie większość domen była bardzo krótka, a rozbijanie adresów kopert na dwa lub więcej pakietów byłoby zbyt przesadne, aby wziąć pod uwagę potencjał bardzo długiej domeny nazwy.
Dominic Sayers,
38

320

A segmenty wyglądają tak

{64} @ {255}

64 + 1 + 255 = 320

Przeczytaj także to, jeśli sprawdzasz poprawność wiadomości e-mail

http://haacked.com/archive/2007/08/21/i-knew-how-to-validate-an-email-address-until-i.aspx

Kok
źródło
Jednak zgodnie z tą specyfikacją (w przypadku danych pożyczki studenckiej) nchelp.org/elibrary/ESC/CommonRecord-CommonLineDocumentation/... na stronie 20: „Długość wiadomości e-mail uległa zmianie w celu odzwierciedlenia obecnych standardów ANSI. Adres e-mail ma maksymalną długość 128 znaków. ” Hmm
Nathan
8
Oto piękny artykuł obalający różne mity na temat e-maili, w tym „max len == 320”. Limit to w rzeczywistości 254.
Carl
26
Gdzie jest ten piękny artykuł?
Bob
1
Ta odpowiedź jest poprawna. To ważne e-maile, ale całkowicie bezużyteczne, ponieważ 2821 ograniczać mail / komendy RCPT 256 ze <>wspornikami ...
vp_arth
1
Czy obejmuje to wiadomości e-mail w formacie user+inbox@domain?
Aaron Esau
20

użytkownik

Maksymalna łączna długość nazwy użytkownika wynosi 64 znaki.

domena

Maksymalnie 255 znaków w części domeny (jeden po „@”)

Istnieje jednak ograniczenie odczytu RFC 2821 :

Maksymalna łączna długość ścieżki zwrotnej lub ścieżki do przodu wynosi 256 znaków, łącznie z interpunkcją i separatorami elementów ”. Ponieważ adresy, które nie mieszczą się w tych polach, zwykle nie są przydatne, górny limit długości adresów zwykle należy uznać za 256, ale ścieżkę definiuje się jako: Ścieżka = „<” [Adl „:”] Skrzynka pocztowa „> „Ścieżka do przodu będzie zawierać co najmniej parę nawiasów kątowych oprócz skrzynki pocztowej, co ogranicza adres e-mail do 254 znaków.

Artem Kovalov
źródło
7
Fajne, starożytne RFC z 1982 roku ... Jest rfc5321 dla SMTP
vp_arth
14

Aby pomóc zdezorientowanym debiutantom takim jak ja, odpowiedz „Jaka jest maksymalna długość prawidłowego adresu e-mail?” ma 254 znaków .

Jeśli Twoja aplikacja korzysta z wiadomości e-mail, po prostu ustaw swoje pole, aby akceptowało 254 znaki lub mniej i możesz zacząć.

Możesz uruchomić szereg testów na e-mailu, aby sprawdzić, czy jest on ważny tutaj. http://isemail.info/

RFC lub prośba o komentarze to rodzaj publikacji od Internet Engineering Task Force (IETF), która określa limit 254 znaków. Znajduje się tutaj - https://tools.ietf.org/html/rfc5321#section-4.5.3

Joshua Dance
źródło
12

Inne odpowiedzi trochę mętniły wodę. Prosta odpowiedź: 254 całkowitych znaków w naszej kontroli dla poczty e-mail 256 dotyczy CAŁEGO adresu e-mail, który zawiera domyślny „<” na początku i „>” na końcu. Dlatego 254 pozostało do naszego użytku.

Forrest
źródło
4

Zgodnie z poniższym artykułem:

http://tools.ietf.org/html/rfc3696 (strona 6, sekcja 3)

Wspomniano, że:

„Adres e-mail ma limit długości. Limit ten może zawierać maksymalnie 64 znaki (oktety) w„ części lokalnej ”(przed„ @ ”) i maksymalnie 255 znaków (oktety) w części domeny (po „@”) o łącznej długości 320 znaków. Systemy obsługujące pocztę elektroniczną powinny być przygotowane do przetwarzania tak długich adresów, nawet jeśli są rzadko spotykane. ”

Tak więc maksymalna łączna długość adresu e-mail wynosi 320 znaków („część lokalna”: 64 + „@”: 1 + „część domeny”: 255, co daje 320)

Waqar UlHaq
źródło
czy możesz podać mi wyrażenie regularne w javascript, aby zweryfikować identyfikator e-mail o długości 320 znaków? Z góry dziękuję.
Kamlesh,
1
Ta część standardu została zmieniona erratą, tak aby zawierała łączny limit 254 znaków. Zobacz zaakceptowaną odpowiedź, aby uzyskać szczegółowe informacje i linki do erraty.
Matthijs Kooijman