API Java Mail, получающий вложение электронной почты с вьетнамскими символами - PullRequest
0 голосов
/ 28 сентября 2010

Недавно я следовал онлайн-руководству Sun по Java Mail API, чтобы отправлять электронную почту, загружать электронную почту и загружать вложения. Когда дело доходит до извлечения вложения из электронного письма, мой код выглядит очень похоже на этот пост Загрузка вложений с помощью Java Mail

Однако я сталкиваюсь с проблемой, когда пользователь отправляет имя файла вложения электронной почты с вьетнамским символом, что-то вроде этого: hệ thống thông.xls

Когда код пытается получить имя файла с помощью: bodyPart.getFileName () , имя возвращаемого файла выглядит следующим образом: h? th? ng =? iso-8859-1? b? dGj0bmcueGxz? =

Я попробовал следующее, но без удачи

1) установить параметр Java VM: -Dfile.encoding = UTF-8

2) попробуйте заглянуть в Java Mail API с поддержкой символов UTF-8, но не можете найти

Любая подсказка поможет. Спасибо!

Ответы [ 2 ]

3 голосов
/ 19 апреля 2012

Вы можете использовать MimeUtility.decodeWord (bodyPart.getFileName ()), чтобы получить фактическое имя файла.

Поскольку заголовки почты могут содержать только символы ASCII, в RFC 2047 описывается, как кодировать другие наборы символов иэтот метод декодирует имя, как указано в RFC 2047.

1 голос
/ 28 сентября 2010

ISO-8859-1 - это набор символов Latin-1.Он включает в себя только западноевропейские символы.Так что это может быть подсказка.Может быть, проблема в клиенте, который отправляет вложение?Посмотрите на необработанный источник сообщения, проверьте, не говорит ли кто-нибудь из заголовков о кодировке текста.

...