Не-латинская проверка адреса электронной почты

Теперь, когда ICANN разрешает имена доменов без латинского алфавита, я должен быть обеспокоен проверкой электронной почты? В настоящее время на моих сайтах используются функции php для обеспечения набора буквенно-цифровых символов в каждом сегменте адреса электронной почты. Будут ли эти другие наборы символов, такие как кириллица, арабский и китайский, пройти проверку? Рекомендуются ли для этого функции php?

Ответ 1

Я думаю, что в конечном итоге лучший способ - использовать правильную функцию IDN для преобразования входящей строки в строку ACE (xn--xyz-blah.com). Если этот процесс работает, доменное имя действительно. Если это не так, это не так.

Существует функция PHP с именем idn_to_ascii(), которая требует этого, но для этого нужны дополнительные библиотеки. Вам нужно будет увидеть, доступно ли это в вашей системе.

Также существует внешняя команда Linux с именем idn, которая делает конверсии IDN. Однако я ничего не знаю об этом.

Если вы хотите использовать только встроенные методы PHP, delfuego предоставляет регулярное выражение в этом вопросе, которое выглядит очень хорошо.

Ответ 2

Я хотел бы рекомендовать filter_var() с FILTER_VALIDATE_EMAIL. Но после поиска в Google оказалось, что пока не поддерживает многобайтовые символы. Похоже, на данный момент лучше всего вырезать нелатинские символы и выполнить обычные проверки против этого (хотя checkdnsrr, очевидно, будет терпеть неудачу, так как вы изменили домен, удалив нелатинские символы и заменив их их латинскими эквивалентами, поэтому, если вы используете это для проверки записей MX домен электронной почты, тогда вам необходимо временно отключить это).