Проверка валидности email
Масштаб происходящей в сети трагедии можно оценить выполнив простой запрос - количество велосипедов и их форм-факторов поражает воображение. С учетом того, что почтовый адрес пользователя является одним из самых интимных и оберегаемых элементов его сетевой жизни, он требует более внимательного подхода к его обработке и хранению. Итак...
Почтовый адрес
RFC-2822 гласит:
- Почтовый адрес состоит из имени и домена, разделенных символом "@" (раздел 3.4.1);
- Имя может состоять из букв, цифр и символов: "!", "#", "$", "%", "&", "'", "*", "+", "-", "/", "=", "?", "^", "_", "`", "{", "|", "}", "~" (раздел 2.3.4), а так же символа "." (точка) за исключением того, что имя не может начинаться с точки, заканчиваться на точу или содержать две точки подряд;
- Имя может быть заключено в двойные кавычки (") и содержать уже любые символы (раздел 3.2.5);
- Максимальная длина имени составляет 64 символа;
- Имя регистро-зависимо за исключением служебного имени postmaster (RFC-5321, раздел 4.1.1.3);
- Для совместимости с устаревшим RFC-822, адрес может быть заключен в треугольные скобки и содержать символ "@" (раздел 4.4).
Имя домена
RFC-1035 гласит:
- Общая длина имени домена ограничена 255 символами, длина имени узла ограничена 63 символами (раздел 2.3.4);
- Имя узла может состоять из букв, цифр и символа "-" за исключением начала и окончания;
- Узлы разделяются символом "." (точка);
- Имя домена регистро-независимо;
- Имя домена может заканчиваться на символ "." (точка), подразумевая корневой узел, хотя обычно последняя точка не пишется (подробнее см. FQDN).
У кого длиннее?
- В качестве примера использования потенциала длины имени можно привести домен www.abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijk.com - проект, где предлагается бесплатно получить самый длинный email адрес и почувствовать на себе все прелести обработки такого адреса веб-формами, почтовым программным обеспечением, системами антиспама и т.д.;
- Максимальная длина почтового адреса, согласно RFC-5321 (раздел 4.5.3.1.3) составляет 256 символов (при этом остается ограничение на длину имени в 64 символа и длину домена в 255 символов).
Примеры
RFC-3696 дает нам несколько занимательных примеров валидных почтовых адресов:
- <@hosta.int,@jkl.org:userc@d.bar.org>
- jsmith@[192.168.2.1]
- Abc\@def@example.com
- Abc\\@example.com
- Abc\\\@def@example.com
- Fred\ Bloggs@example.com
- Joe.\\Blow@example.com
- "Abc@def"@example.com
- "Fred Bloggs"@example.com
- user+mailbox@example.com
- customer/department=shipping@example.com
- $A12345@example.com
- !def!xyz%abc@example.com
- _somename@example.com
Что делать?
|