Ідентифікатор електронної пошти з тире в кінці локальної частини


19

Це дійсний електронний лист, якщо в електронному листі є тире (-) наприкінці локальної частини електронного листа? Наприклад,

an.unusual.email-@mydomain.com

Або, узагальнюючи, може будь-який із цих символів ( Characters !#$%&'*+-/=?^_``{|}~ (ASCII: 33, 35-39, 42, 43, 45, 47, 61, 63, 94-96, 123-126)), які дійсно знаходяться в локальній частині електронної пошти на початку та / або в кінці ідентифікатора електронної пошти?

Google каже, що він недійсний, тому наразі я вважаю його також недійсним, хоча RFC виключає лише [крапковий] символ починаючи з та / або закінчуючи локальну частину.

Помилка GMail для наведеного вище випадку

Примітка. Я не переймаюся частиною домену, тому що вона стає більш активною завдяки DNS, який ускладнює питання та відповіді.

https://social.technet.microsoft.com/Forums/ie/en-US/69f393aa-d555-4f8f-bb16-c636a129fc25/what-are-valid-and-invalid-email-address-characters


Гарне питання. Ви подивилися це запитання та нитка відповідей на переповнення стека ? Багато інформації - значна частина застаріла на даний момент, але все ж хороша відправна точка /
JakeGould

Хороша довідкова посилання, здається, Google розглядає цей електронний лист як недійсний, тоді як у Microsoft немає жодних проблем.
Джімсон Каннантара Джеймс

1
Поділившись цим, коли ви створили Google: Gmail ігнорує будь-які періоди в електронній пошті, тож якщо ваш електронний лист був "anunusualemail@gmail.com", ви також отримаєте пошту, надіслану на "an.unusual.email@gmail.com". Він також ігнорує плюси в кінці адреси електронної пошти: "anunusualemail+something@gmail.com".
mowwwalker

1
На своїй власній поштовій службі я можу заборонити букву "u" від імен користувачів. Лише тому що.
Agent_L

Відповіді:


60

Це дійсний електронний лист, якщо в електронному листі є тире (-) наприкінці локальної частини електронного листа? [...] Google стверджує, що він недійсний, тому наразі я вважаю його також недійсним, хоча RFC виключає лише [крапковий] символ починаючи з та / або закінчуючи локальну частину.

Це дійсно. Ви бачите його відхиленим лише Google, оскільки він здійснює зовсім іншу перевірку - у них є власна політика щодо того, якою може бути локальна частина , як і багато інших постачальників.


Google або будь-хто інший зобов’язуються приймати всі можливі дійсні адреси електронної пошти, лише якщо форма насправді вимагає наявної, дійсної адреси електронної пошти (можливо, від постачальника). Наприклад, було б помилкою, якщо поле Gmail To: / Cc: відхилило дійсну адресу.

Але поле, яке ви виділили, не запитує вас про існуючу електронну адресу; він запитує ім'я облікового запису в системах Google, що стане основою для електронної адреси лише після створення облікового запису. Немає нічого, що забороняло б Google чи комусь іншому обмежувати набір дійсних імен облікових записів (або, справді, навіть імен поштових скриньок) у власній системі .

Або, іншими словами, визначення дозволених символів для "локальної частини" означає лише, що поштові програми SMTP-сервери повинні приймати такі адреси в заголовках RFC 822 та командах SMTP - але це нічого не говорить про можливість створення таких поштових скриньок. (Дійсно, тоді, коли були написані ранні повідомлення електронної пошти, і більшість поштових скриньок ще були прив’язані до облікових записів на рівні ОС, їх імена мали подібні або навіть більш жорсткі обмеження.)

Наприклад, ця частина RFC 5321 (розділ 4.1.2, нижче ABNF) прямо говорить, що приймаючий хост дозволений і повинен мати набагато більш жорсткі обмеження щодо того, як названі його власні поштові скриньки:

Хоча вищенаведене визначення для локальної частини відносно дозволене, для максимальної сумісності оператор, який очікує отримання пошти, ДОБРЕ уникнути визначення поштових скриньок, де локальна частина вимагає (або використовує) формуляризованих рядків або там, де локальна частина має місце -чутливий.

Тож, хоча anunusualemail-@gmail.com це синтаксично, це дійсно не означає, що Google повинен дозволити вам створити його.


6
Як цікава сторона, Google ігнорує періоди в адресах електронної пошти ( gmail.googleblog.com/2008/03/… ), які також не вказані в RFC. Отже, myname@gmail.com переходить на те саме місце, що і my.name@gmail.com або myname@gmail.com.
childofsoong

4
@JimsonKannantharaJames Загалом, якщо ви хочете перевірити, чи є електронний лист дійсним, вам слід надіслати електронний лист на цю адресу і змусити користувача вжити заходів. Будь-які перевірки, що базуються на синтаксисі адреси, насправді мають бути лише для того, щоб зафіксувати помилку на користувачі.
Майкл Міор

1
@grawity О, я знаю - я коментував, щоб навести приклад іншої речі, яка не вказана в RFC, але це дозволено.
childofsoong

1
@ user71659 Якщо ви неправильно уникаєте контрольних символів, де це необхідно, у вас є більша проблема. Зрештою, повідомлення електронної пошти було введено користувачем, а введення користувача завжди слід вважати небезпечним. Якщо припустити, що якесь поле у ​​вашій базі даних є безпечним, оскільки деякі правила перевірки можуть бути досить небезпечними. Що станеться, коли через кілька місяців хтось інший заповнить це поле з іншої форми, яка не має такої ж валідації?
Майкл Міор

2
@ user71659 ви плутаєте дві різні проблеми і заплутуєте аргумент. MichaelMior абсолютно правильно стверджувати , що для перевірки , що адреса електронної пошти існує , то ви будете мати , щоб відправити лист за цією адресою , який вимагає втручання користувача.
кумархарш

7

G Suite (офіційно Google Apps для вашого домену) дійсно дозволяє дефісам (тире) в адресах електронної пошти, навіть як останній символ.

Імена користувачів можуть містити літери (az), цифри (0-9), тире (-), підкреслення (_), апострофи (') та крапки (.).

Джерело: Вказівки щодо імені та пароля

Як ви зазначали, Gmail не дозволяє дефісів в адресах електронної пошти.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.