2015-11-12 8 views
2

Я хочу отправить электронное письмо с помощью javax.mail-api с почтовым вложением. Имя файла должно содержать умлауты и ярлыки.Как создать имя файла вложения вложений с umlauts и unterscore?

Чтобы получить правильное имя файла, я тестирование следующим образом:

Session session=Session.getDefaultInstance(new Properties()); 
    MimeMessage mimeMsg= new MimeMessage(session); 
    mimeMsg.setSubject("Ä_my_test_string","utf-8"); 
    System.out.println(mimeMsg.getHeader("Subject")[0]); 

Результат: =?utf-8?Q?=C3=84=5Fmy=5Ftest=5Fstring?=

Вопрос: HWO я могу получить тему письма, которое точно так же, как и входной строки?

+0

Вы пытались отправить почту? Я думаю, вы обнаружите, что тема отображается правильно в большинстве почтовых читателей. То, что вы видите, является объектом, закодированным в кодировке [quoted-printable] (https://en.wikipedia.org/wiki/Quoted-printable), поскольку спецификации электронной почты требуются в течение длительного времени. – VGR

+0

ОК, но когда я получаю почту, например, в 'outlook', имя файла точно соответствует строковому результату, как указано выше. «Закодированные» символы не интерпретируются. – membersound

+0

Из любопытства вы пытались отправить это письмо любым получателям, не связанным с Outlook, например, бесплатной учетной записи электронной почты? – VGR

ответ

0

Класс javax.mail.internet.MimeUtility содержит методы, используемые для кодирования и декодирования заголовков.

public static void main(String[] args) throws Exception { 
    System.out.println(MimeUtility.decodeText("=?utf-8?Q?=C3=84=5Fmy=5Ftest=5Fstring?=")); 
}