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

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

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

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

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

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

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