Подтвердить что ты не робот

Список адресов электронной почты, которые могут быть использованы для проверки проверки javascript script

Есть ли у кого-нибудь список адресов электронной почты, которые я могу использовать для проверки моей проверки адреса JS script? Я ищу как полный список, так как разумно тестировать наиболее распространенные случаи кросс, если не во всех случаях.

4b9b3361

Ответ 1

Примеры действительны в соответствии с RFC2822

  • [email protected]
  • [email protected]
  • [email protected]
  • name\@tag @example.com - это действительный адрес электронной почты, содержащий два символа @.
  • пробелы \are\[email protected]
  • "могут быть указаны" @example.com !
  • # $% & '* + -/= ^ _ `{|} ~ @[1.0.0.127].? !
  • # $% & '* + -/= ^ _ `{|} ~ @[IPv6: 0123: 4567: 89AB: CDEF: 0123: 4567: 89AB: CDEF].?
  • me (это комментарий) @example.com - комментарии не приветствуются, но не запрещены RFC2822.

Примеры недействительны в соответствии с RFC2822s

  • мне @
  • @example.com
  • меня. @Example.com
  • .me @example.com
  • мне @example..com
  • [email protected]
  • мне \@example.com

От: http://en.wikibooks.org/wiki/JavaScript/Best_Practices

Ответ 2

Теперь я собрал тестовые примеры от Cal Henderson, Dave Child, Phil Haack, Doug Lovell и RFC 3696. 164 тестовых адреса во всех.

Я провел все эти тесты со всеми проверками, которые я смог найти. Сравнение здесь: http://www.dominicsayers.com/isemail

Я постараюсь сохранить эту страницу в актуальном состоянии, так как люди повышают эффективность своих валидаторов. Благодаря Cal, Dave и Phil за помощь и сотрудничество в компиляции этих тестов и конструктивной критике моего собственного валидатора.

Люди должны знать об ошибках в отношении RFC 3696. Три из канонических примеров на самом деле являются неверными адресами. И максимальная длина адреса составляет 254 или 256 символов, не 320.

Ответ 3

Доменная часть (после последнего @) представляет собой ряд строковых меток, разделенных точкой.

Каждая метка представляет собой строку от 1 до 63 октетов, состоящую из A-Z, a-z 0-9 или дефиса (-)

Максимальный размер домена - 255 октетов.

Чтобы быть совместимым с arpanet, каждая метка должна начинаться с буквы и заканчиваться буквой или цифрой, но некоторые TLD: s теперь позволяет использовать весь числовой домен, например 0.nu

Обратите внимание, что TLD разрешено иметь 63 октета. Очень много скриптов ошибочно ограничивают его до 2-3 октетов, что делает domain.name недопустимым.

Пример

abcdefghijklmnopqrstuvwxyz.ABCDEFGHIJKLMNOPQRSTUVWXYZ # $% & '+ -/= ^ `{|}[email protected]9.abcdefghijklmnopqrstu.vwxyzABCDEFGHIJKLMNOP.QRSTUVWXYZ0.1.2.3.4.5.6.7.8.9.az.AZ.!.?. 0-9.a0.b1.c2.d3.e4.f5.g6.h7.i8.j9.K0.L1.M2.N3.O.domain.name

(и нет, он не зарегистрирован)

Обновление: С IDNA почти все возможно:

  • [email protected]
  • idna_in_clear (?) _ @Текст 例子. 测试.مثال.آزمایشی

См. также:

https://stackoverflow.com/info/3232/how-far-should-one-take-e-mail-address-validation

http://www.leshazlewood.com/?p=5

Обновление: Бобинс предложил проверить точку в доменном имени.

Резюме: проверяйте только @и точку в домене, а затем отправляйте электронное письмо с подтверждением.

Вот пример, который тестирует @и dot:

  • Должен быть хотя бы один @
  • В локальной части должно быть не менее одного char (pos > 0)
  • В доменной части должна быть хотя бы одна точка
  • Доменная часть должна быть не более 4 символов

Вот простой:

function isEmail(address) {
    var pos = address.lastIndexOf("@");
    return pos > 0 && (address.lastIndexOf(".") > pos) && (address.length - pos > 4);
}

Или функция, которая возвращает локальную и доменную часть в объекте (если вы хотите обработать ее еще дальше, например, преобразовать ее в punycode)

function isEmail(address) {
    var pos = address.lastIndexOf("@");
    return pos > 0 && (address.lastIndexOf(".") > pos) && (address.length - pos > 4) ? 
    {
        local:address.substr(0,pos < 0 ? 0 : pos),
        domain:address.substr(pos+1)
    }: false;
}