Кодирование имен файлов вложений на разных языках - PullRequest
0 голосов
/ 22 мая 2019

Я стараюсь отправить электронное письмо с Spring MimeMessageHelper с вложением символов из разных языков:

MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(message, MimeMessageHelper.MULTIPART_MODE_MIXED_RELATED, StandardCharsets.UTF_8.name());
// ...
helper.addAttachment("éàè öäü русский алфавит.pdf", bytes, "application/pdf");

Что бы я ни делал, имя файла в Gmail всегда выглядит как:

?UTF-8?B?0JDQutGC0LXRgNGLLdCb0Y7QutGB0LXQvNCx0YPRgA==?= =?UTF-8?B?0LMtMjAxOS0xMSDQvNCw0Y8ucGRm?=

Я пытался:

MimeUtility.encodeText("éàè öäü русский алфавит.pdf", StandardCharsets.UTF_8.name(), "Q");
MimeUtility.encodeWord(...) // same result

, а также установка:

System.setProperty("mail.mime.splitlongparameters", "false");
System.setProperty("mail.mime.encodeparameters", "false"); // or true
System.setProperty("mail.mime.charset", "utf-8");

не вносит изменений.

Если я удаляю не-кириллические символы (éàè öäü) из имени файла, то имя файла кодируется хорошо, просто без каких-либо вызовов MimeUtility.encode.

Но в моем случае использования у меня могут быть имена файлов на разных языках.

Даже когда я меняю éàè öäü русский алфавит.pdf до 2019 русский алфавит.pdf отображение имени файла остается плохим.Но просто оставив русский алфавит.pdf, он правильно отображается в Gmail.

Почему это так?

Я использую Spring Boot 1.5.21 и Java 8 на Fedora 30.

...