2015-11-12 5 views
2

Je veux envoyer un courriel en utilisant javax.mail-api avec pièce jointe. Le nom de fichier devrait contenir des trémas et unterscore.Comment créer un nom de fichier de pièce jointe avec trémas et unterscore?

Pour obtenir le bon nom, je teste comme suit:

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]); 

Résultat: =?utf-8?Q?=C3=84=5Fmy=5Ftest=5Fstring?=

Question: hwo puis-je obtenir un sujet de messagerie qui est exactement la même que la chaîne d'entrée?

+0

Avez-vous essayé d'envoyer le courrier? Je pense que vous trouverez que le sujet est affiché correctement dans la plupart des lecteurs de courrier. Ce que vous voyez est le sujet encodé dans l'encodage [quoted-printable] (https://en.wikipedia.org/wiki/Quoted-printable), car les spécifications de courrier électronique sont requises depuis longtemps. – VGR

+0

OK, mais quand je reçois le courrier par exemple dans 'outlook', le nom de fichier contient exactement le résultat de la chaîne comme ci-dessus. Les caractères "codés" ne sont pas interprétés. – membersound

+0

Par curiosité, avez-vous essayé d'envoyer ce courrier à des destinataires autres que Outlook, comme un compte de messagerie Web gratuit? – VGR

Répondre

0

La classe javax.mail.internet.MimeUtility contient les méthodes utilisées pour encoder et décoder les en-têtes.

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