Заголовок кодируется в соответствии с механизмом, описанным в RFC 2047 (это encoded-word
), который говорит, что часть заголовка соответствует =?
?B?
?=
- секция с байтовым кодированием. говорит о том, как интерпретировать байты, и (поскольку это стиль B
, а не стиль Q
) в кодировке Base-64.
Все это довольно сложно.К счастью, вы можете легко справиться с этим, используя статический метод javax.mail.internet.MimeUtility.decodeText()
.Это означает, что вы можете переключиться на это:
String filename = MimeUtility.decodeText(bodyPart.getFileName());
На самом деле, вам лучше сочетать это и со следующей строкой:
File f = new File("C:\\Attachments",
MimeUtility.decodeText(bodyPart.getFileName()));
Это лучше, потому что избегает больше проблемс созданием имен файлов, чем пытаясь сделать все это вручную.(Это также означает, что вы можете вывести это буквальное имя пути в какое-либо место конфигурации.)