Вообще, не-ascii заголовки в почтовых сообщениях кодируются в соответствии с RFC 2047 (http://www.faqs.org/rfcs/rfc2047/). При отправке почты с помощью Javamail столкнулся со следующей проблемой: формируется заголовок письма, имеющий вид:
=?UTF8?B?0J3QsNC/0YDQsNCy0LvQtdC9INC00L7QutGD0LzQtdC9?= =?UTF8?B?0YI6INC+0YjQuNCx0LrQuCDQsiBlbWFpbA==?=
Не совсем корректным здесь является имя используемой кодировки - "UTF8", в то время как IANA предписывает использовать имя "UTF-8", т.е. с дефисом (http://www.iana.org/assignments/character-sets/character-sets.xhtml). Такие заголовки "съедаются" Outlook'ом, веб-клиентами mail.ru и gmail.com, однако, например, SquirrelMail выводит такой заголовок "как есть", не выполняя декодирование.
Для установки заголовка мой код (вернее не мой, а код open-source проекта, но не суть) испольует javax.mail.internet.MimeMessage.setSubject(java.lang.String subject). В документации сказано, что данный метод использует "platform's default charset" (http://docs.oracle.com/javaee/6/api/javax/mail/internet/MimeMessage.html#setSubject(java.lang.String)), по факту - системное свойство file.encoding.
Посмотрев в стартовые скрипты приложения, я обнаружил, что там действительно указана опция jvm "-Dfile.encoding=UTF8". Поменяв ее на "-Dfile.encoding=UTF-8" я решил проблему с некорректным именем кодировки в заголовках отправляемых почтовых сообщений.
Комментариев нет:
Отправить комментарий