Рекомендации по реализации поддержки кириллических адресов электронной почты в CMS 1С-Битрикс
                Как известно, система управления контентом 1С-Битрикс «Управление сайтом» (далее - CMS 1С-Битрикс) пока не поддерживает обработку интернационализированных адресов электронной почты (далее – EAI-адресов), в том числе содержащих кириллические символы.
                Интернационализированный адрес электронной почты или EAI-адрес – это адрес электронной почты, содержащий символы из таблицы Unicode либо в доменной части (например, info@поддерживаю.рф), либо в локальной части (например, тест@cctld.ru), либо в обеих частях адреса электронной почты (например, тест@поддерживаю.рф).
                
                Таким образом ввести адрес электронной почты, содержащий Unicode символы, на сайте под управлением CMS 1С-Битрикс нельзя:
                
                В публичной части:
                
- при использовании компонента подписки на новости (bitrix:sender.subscribe);
 - при использовании компонента формы обратной связи (bitrix:main.feedback);
 
                В административной части:
                    
- при создании и редактировании пользователя.
 
            Первая причина  этого – функция-валидатор check_email()  из /bitrix/modules/main/tools.php, которая содержит регулярное выражение  не пропускающее нелатинские символы как в локальной части e-mail (до знака @), так и в доменной части (после знака @).
            
            Внутри этой функции предусмотрено три проверки на базе regex-выражений. Для обеспечения работы с кириллическими EAI-адресами одну из них  (на общую длину e-mail адреса) нужно отключить (закомментировать), а две другие - дополнить русским алфавитом.
                
                Функцию check_email(), к сожалению, нельзя  переопределить и единственное, что можно сделать в этой ситуации – закомментировать ее в tools.php и определить ее заново у себя – например, в /bitrix/php_interface/init.php. При этом после каждого обновления CMS придется повторять такую операцию.
                
                Вторая причина  - функция bxmail(), которая не умеет работать с EAI адресами.
                Проблема, во-первых, в том, что в коде CEvent происходит преобразование всех Unicode-полей письма, включая поле “to”  в заголовочный UTF-8 (начинающийся с маркера '=?UTF-8?B?'). Во-вторых, не происходит преобразования доменного имени в Punycode. А  функция mail() , оберткой для которой служит bxmail(), с таким форматом “to”  работать не может.
                
                Для решения этой проблемы проще всего воспользоваться встроенной  в CMS 1C-Bitrix функцией custom_mail(), которая вызывается bxmail() вместо mail(), если определена.
                
                В custom_mail() мы реализуем:
                
- проверку и расшифровку ошибочно закодированного в заголовочный UTF-8 поля to;
 - проверку и перевод доменного имени в Punycode в доменной части e-mail, в случае наличия в нем кириллических символов;
 - финальный вызов mail() с исправленными параметрами.
 
На эту доработку обновление CMS не повлияет. Если вам необходимо, чтобы CMS 1C-Bitrix поддерживал и другие EAI-адреса, помимо кириллических, эти наборы символов придется добавить в регулярные выражения в check_email() и custom_mail(), проверяющие факт использования Unicode.