0
我在SQL數據庫和郵件服務器之間編寫了一個適配器。我使用了POP3連接。 此後,我遇到了以下問題 - 當適配器收到俄文文件名時,會發生此錯誤。
示例輸入文件名:=?UTF-8?B?0KHQutGA0LjQv9C60LAg0JzQsNGA0LjRjy5kb2N4?=
編碼格式爲Base64。我試圖將Base64轉換爲UTF-8,但它沒有解決問題。
我的代碼:如何在使用Java郵件API時轉換文件名
if (contentType.contains("multipart"))
{
Multipart multiPart = (Multipart) message.getContent();
int numberOfParts = multiPart.getCount();
for (int partCount = 0; partCount<numberOfParts; partCount++)
{
MimeBodyPart part = (MimeBodyPart) multiPart.getBodyPart(partCount);
if (!Part.ATTACHMENT.equalsIgnoreCase(part.getDisposition()))
{
//this part is attachment
continue;
}
//String fileName = part.getFileName();
String fileName = part.getFileName().toString();
if (fileName.contains("UTF-8"))
{
byte[] decoded = Base64.decodeBase64(fileName.getBytes());
fileName = new String(decoded, "UTF-8");
}
attachFiles += fileName + ", ";
part.saveFile("d:/" + File.separator + fileName);
//this part may be the message content
messageContent = part.getContent().toString();
}
if (attachFiles.length() > 1)
{
attachFiles = attachFiles.substring(0, attachFiles.length()-2);
}
}
沒有任何人有一個想法,我怎麼能解決這個問題呢?
儘量只這部分'0KHQutGA0LjQv9C60LAg0JzQsNGA0LjRjy5kb2N4' – Jens
轉換部分,它會工作。但是這段代碼不返回** String fileName = part.getFileName()。toString(); **這個值 –