Не так давно по работе нужно было проверить, может ли один из наших продуктов отправить письмо на email адрес, содержащий юникодные символы. На удивление, эта задача оказалась богатой на неожиданные открытия. И одним из самых сложных испытаний было заполучить адрес электронной почты, содержащий не-ASCII символы!
Первой проблемой, с которой я столкнулся, оказался тот факт, что не так много Email провайдеров на данный момент переключилось на поддержку международных символов в адресах электронной почты. Протокол RFC 6530, позволяющий использование адресов с нелатинскими, а также диакритическими знаками, был выпущен в 2012 году однако, с тех пор изменилось немногое. Правильнее сказать практически ничего не изменилось. Если вы не знали, предыдущий стандарт формирования адресов электронной почты RFC 3696 не допускает создание и использование таких адресов вообще. Впрочем, обо всем по порядку!
Зачем?
Давным-давно.. в далекой-далекой галактике США, когда интернет был маленьким и все в нем говорили исключительно на английском языке, а DNS только-только развивался, было решено не использовать неанглийские символы в адресах интернет-сайтов. IDN, позволяющий использование любого языка в доменном имени был внедрен чуть позднее, уже в 90е, т.е только тогда, когда интернет более-менее распространился по планете. Браузеры стали потихоньку поддерживать неанглийские имена доменов, а пользователи начали регистрировать сами домены. Тем не менее, домены первого уровня оставались английскими вплоть до 2009 года. После чего было так же разрешено использовать языки с написанием с право налево, а также иероглифические языки!
Регистрируем юникодный адрес почты
Сам не зная почему, я был на полном серьезе уверен, что в Китае, Японии и прочих Азиях существуют тонны веб-сайтов а также почтовых сервисов использующих не-ASCII символы в адресах электронной почты и доменных имен. Однако, оказалось что они не шибко-то и стараются и по-старинке используют латинские символы как и остальная часть мира. Я опросил нескольких своих коллег из Китая и Японии, не знают ли они любые сервисы электронной почты, разрешающие использование не-ASCII символов но к сожалению, потерпел неудачу. Если отыщите — напишите, пожалуйста в комментариях. В любом случае, зарегистрироваться на подобном ресурсе без знания языка и подобающей клавиатуры, по всей видимости будет нелегкой задачей. Гугл транслейт и виртуальная клавиатура должны помочь в теории, однако на практике все может быть совершенно иначе.
Одно из моих преимуществ по сравнению с англоязычными коллегами — я могу разговаривать на русском языке, который основан на кириллическом алфавите, который внезапно! использует юникод. К сожалению, ни один из известных в России Email провайдеров (GMail, Yandex или Mail.ru) не разрешает зарегистрировать адрес электронной почты с кириллическими символами в имени пользователя, т.е до символа @ (собаки).
Тем не менее, Яндекс разрешает зарегистрировать адрес электронной почты с латинскими символами в имени пользователя и кириллическими в его доменной части, т.е после символа @ (собаки). Т.е технически вы можете подключить Яндекс почту для вашего кириллического домена и создать любой* почтовый ящик.
*Яндекс анонсировал поддержку кириллических доменов еще в 2010 году и пообещал снять ограничение на не-ASCII символы в именах ящиков в самом ближайшем будущем. Т.е вы не сможете использовать адрес вида иван@марья.рф, а вот ivan@марья.рф – вполне сможете. Спустя почти семь лет я могу констатировать, что это ограничение так и не было снято. Вдобавок, у меня не было ни одного кириллического домена, поэтому вариант с подключением Яндекс почты на кириллический домен к сожалению, отметался.
Поискав еще какое-то время, я нашел парочку относительно новых и не совсем популярных Email сервисов, позволяющих использование кириллических символов в адресах электронной почты. Думаю, что имеет смысл кратенько упомянуть индийский DataMail от компании Data xgen technologies, поддерживающий Русский, Китайский, Арабский, язык Хинди и еще несколько языков до кучи, который я так и не смог попробовать, поскольку для регистрации в сервисе необходимо отправить текстовое сообщение СМС с сим-карты, зарегистрированной в стране, соответствующей выбранному вами языку. Поэтому сразу переключусь на второй сервис, российский письмо.рф, который я опробовал в ходе своих экспериментов. И таки-да, они не поддерживают протокол https, я заметил.
Отправляем письмо на юникодный email адрес через веб-клиент
Собственно далее я зарегистрировал кириллический адрес электронной почты на сервисе письмо.рф и отправил письмо на этот адрес с почтовых ящиков Gmail, Yandex и Mail.ru
В 2014 Гугл анонсировал что они собираются поддерживать не-ASCII символы в адресах электронной почты. Согласно их заявлению, «A first step toward more global email», принятие нового стандарта электронной почты является довольно сложной задачей, поскольку это потребует поддержки юникодного набора символов в адресах электронной почты от каждого сервера, начиная от отправителя и заканчивая получателем. И они были готовы стать теми, кто сделает первый шаг. Что означало, что пользователи GMail будут способны отправлять и получать письма от людей, адреса электронной почты которых содержат такие символы (например, 武@メール.グーグル).
Как я уже сказал, я попробовал отправить письмо с GMail на только что созданный кириллический адрес иии… оно не было отправлено. GMail вернул сообщение: «local-part of envelope RCPT address contains utf8 but remote server did not offer SMTPUTF8». Собственно к гуглу у меня нет никаких претензий — проблема вызвана тем, что удаленный сервер письмо.рф не возвращает SMTPUTF8.
Mail.ru и вовсе отказался отправлять мое письмо, выдав всплывающее окошко: В поле «Кому» указан некорректный адрес получателя. Исправьте ошибку и отправьте письмо еще раз.
Яндекс стал единственным из большой тройки, кто успешно отправил письмо на электронный адрес с кириллическими символами.
Отправляем письмо на юникодый адрес электронной почты по SMTP
Отправка письма на юникодный адрес электронной почты с использованием SMTP была последней и самой главной частью моих тестов. Как вы уже наверное догадались, использовать гугловый SMTP не имело смысла, поскольку их веб-интерфейс уже показал мне ошибку вызванную тем, что письмо.рф не предлагает SMTPUTF8. То же самое касалось Mail.ru, который попросту отказался отправлять письмо на кириллический адрес. Так что я отправил письмо через smtp.yandex.ru иии.. получил ошибку ‘The client or server is only configured for E-mail addresses with ASCII local-parts’ 😐
Отправляем письмо на адрес с ASCII символами в имени ящика и юникодными символами в имени домена
На этот раз мне пришлось зарегистрировать другой почтовый адрес с латинскими символами в имени ящика. К сожалению, сервис письмо.рф не разрешает латинские символы в имени ящика, поэтому я использовал цифры, т.е зарегистрировал ящик потипу 1234567890@письмо.рф.
На этот раз все трое GMail, Yandex и Mail.ru отправили письмо без проблем.
Отправка письма через SMTP яндекса была тоже успешной.
Заключение
На данный момент, использование не-ASCII символов в адресах электронной почты дает вам ровным счетом ничего кроме дополнительного геморроя, в том числе потому что новый стандарт все еще не распространен повсеместно. Более того, существуют определенные проблемы безопасности при использовании юникода в именах доменов в связи с практически неограниченными возможностями фишинга. Здесь также можно почитать не менее интересную статью о Phishing with Unicode Domains. По всей видимости, надо быть настоящим патриотом, чтобы использовать юникодные адреса доменов и электронной почты.
Такие дела! 😐
Мотофотопрограммист
Живу в Новой Зеландии. Рассказываю о стране и красивых местах, пишу про бытовые вещи.
Прыгнуть с парашютом - осуществил на 50%; приобрести 1400 - работаю над этим; осилить 300км/ч - осилил на 96.6%