2015-02-11 15 views
5

Ich versuche, E-Mails, die UTF-8-Zeichen enthalten können, in Betreff, Nachrichtentext und Anhangsdateinamen zu senden.JavaMail - Anhangsdateiname zeigt UTF-8-Zeichen nicht korrekt an

Ich bin in der Lage, UTF-8-Zeichen als Teil des Betreffs sowie Mesage-Körper zu senden. Wenn ich jedoch einen Anhang mit UTF-8-Zeichen als Anhangsdateinamen sende, wird dieser nicht korrekt angezeigt.

Also meine Frage ist, wie kann ich Attachement Dateiname als UTF-8 festlegen?

Hier ist ein Teil meines Code:

MimeBodyPart pdfPart = new MimeBodyPart(); 
pdfPart.setDataHandler(new DataHandler(ds)); 
pdfPart.setFileName(filename); 
mimeMultipart.addBodyPart(pdfPart); 

Später bearbeiten:

I ersetzt

pdfPart.setFileName(filename); 

mit

pdfPart.setFileName(MimeUtility.encodeText(filename, "UTF-8", null)); 

und es funktioniert perfekt. Danke allen.

+2

verursachen Können Sie uns den Code zeigen Sie versuchen, die Datei anhängen? –

Antwort

0

MIME-Header (wie Subject oder Content-Disposition) müssen MIME-codiert sein, wenn sie Nicht-ASCII-Zeichen enthalten.

Codierung ist entweder "quoted printable" oder "base64". Ich empfehle für .

Siehe hier: Java: Encode String in quoted-printable

0

Ich weiß nicht, wie Sie Anlagen senden. Wenn Upload über Tomcat Server, könnte es durch den Wert von URIEncoding in conf/server.xml

Verwandte Themen