Отправляем письмо на юникодный email адрес

Не так давно по работе нужно было проверить, может ли один из наших продуктов отправить письмо на 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. По всей видимости, надо быть настоящим патриотом, чтобы использовать юникодные адреса доменов и электронной почты.

Такие дела! 😐

Удобный способ не пропустить новое в блоге. Подписывайтесь по Email, RSS или куда более модный Feedly!

На ежемесячную email рассылку + бонус подписаны 164 человек

Мотофотопрограммист
Живу в Новой Зеландии. Рассказываю о стране и красивых местах, пишу про бытовые вещи.
Прыгнуть с парашютом - осуществил на 50%; приобрести 1400 - работаю над этим; осилить 300км/ч - осилил на 96.6%