У меня проблема с расшифровкой имени файла вложения электронной почты. В настоящее время я использую JavaMail 1.4.2. Файл называется «Żółw.rtf» (по-польски Turtle.rtf). Почта отправляется с помощью Mail.app (что представляется довольно значительным). Важные заголовки:
--Apple-Mail-19-721116558
Content-Disposition: attachment;
filename*=utf-8''Z%CC%87o%CC%81%C5%82w.rtf
Content-Type: text/rtf;
x-unix-mode=0644;
name="=?utf-8?Q?Z=CC=87o=CC=81=C5=82w=2Ertf?="
Content-Transfer-Encoding: 7bit
Соответствующий javax.mail.Part.getFileName () возвращает "=? Utf-8? Q? Z = CC = 87o = CC = 81 = C5 = 82w = 2Ertf? =", Который после применения MimeUtility.decodeText , это: "ZÃáoÃÅ≈Çw.rtf". Ясно, не оригинал:).
Для сравнения MimeUtility.encodeText возвращает:
=?UTF-8?Q?=C5=BB=C3=B3=C5=82w.rtf?=
в отличие от:
=?utf-8?Q?Z=CC=87o=CC=81=C5=82w=2Ertf?=
с электронной почты.
Согласно моим исследованиям, буква "Ż" может быть закодирована двумя способами: либо одной буквой, либо буквой "Z" + над точкой. MimeUtility.encodeText использует первое, Mail.app второе.
Однако я хочу иметь возможность декодировать оба. Есть ли способ декодировать имя файла при отправке из Mail.app с помощью JavaMail? Или, может быть, есть какая-то другая библиотека?
Спасибо!
Адам