Java Mail à l'API, les problèmes de Codage

Je suis en utilisant Java Mail API et je suis en train d'envoyer un e-mail via SMTP de Gmail.
Comment mon programme fonctionne:
java.util.Scanner classe est utilisée pour obtenir la saisie de l'utilisateur - je vous demande de l'utilisateur pour les différents paramètres pour être utilisé dans le mail d'envoi de la classe; ce qui ne les suivants:

Message mailMessage = new MimeMessage(session);
mailMessage.setFrom(new InternetAddress("[email protected]"));
mailMessage.setRecipients(Message.RecipientType.TO,InternetAddress.parse(mail.getTo()));
mailMessage.setSubject(mail.getSubject());
mailMessage.setText(mail.getMessage());
Transport.send(mailMessage);

Tout fonctionne tant que je utilisez des symboles ASCII/les caractères. Mais à chaque fois que je veux utiliser "spécifiques au pays" personnages - comme [õäöü] - je obtenir des tas d'étranges symboles...

Techniques que j'ai utilisé jusqu'à présent(qui ne fonctionnent pas pour moi):

setHeader("Content-Type", "text/plain; charset=UTF-8");
setHeader("Content-Encoding","ISO-8859-9");
setContent(message, "text/plain; charset=iso-8859-2");

Remarque: tout s'affiche correctement à l'intérieur d'un IDE lorsque le Système..println() est effectuée pour afficher le message à envoyer.

EDIT: e.x. lors de l'envoi du corps du message est [õäöü]
Il est affiché [ä""?] dans Gmail.

EDIT: Quand mailMessage.setText(MimeUtility.encodeText(mail.getMessage(), "UTF-8", "Q")); est utilisée, la sortie de Gmail est le suivant:

"=?UTF-8?Q?=C3=A4=E2=80=9E=E2=80=9D=EF=BF=BD;=0D=0A?="

Un AUTRE EDIT: d'ailleurs, quand je fais: mailMessage.setText(strVar + "õäöü", "ISO-8859-1");
Il fait ajoute "õäöü" bien dans mon e-mail (mais la première partie[strVar] de la chaîne est encore plein de ?'s et []').

Comment définissez-vous strVar?, et si vous affectez strVar immédiatement avant que mailMessate.setText(..)? Peut-être que le contenu que vous recevez de le scanner n'est pas la même que la chaîne de caractères qui ne fonctionne pas.
J'ai changé mon code un peu pour me permettre d'envoyer le HTML, donc ma méthode d'envoi est: message.setContent("<h5>[õäöü]</h5><h1>" + strVar + "</h1>", "text/html"); Lorsque je reçois un mail HTML est analysée correctement, donc, est "[õäöü]", mais strVar semble "venir" de manière incorrecte. J'ai une classe Input et get() méthode à l'intérieur d'elle: public String get(){ /* Scanner declaration here */ return scanner.nextLine(); } Et dans la deuxième classe MailSender j'initialise strVar comme ça: ` /* déclaration de la classe */ String strVar = input.get(); ` // Désolé, difficile d'écrire du code dans ici 🙂
Pourriez-vous vérifier que les caractères dans la chaîne (et comment il se compare à des personnages dans les cas qui ne fonctionne pas)?
Bien sûr, vous pouvez voir le résultat ici: lien la Sortie est un peu bizarre, je lance mon programme dans les deux IDE (Ide, et Netbeans). J'ai utilisé leur propre console pour l'entrée [Scanner(System.en)]. Intellij semble sortie tout correctement, mais Netbeans de manière incorrecte. Première ligne(CMD) sur l'image. C'est en fait un pot fabriqué à partir de Netbeans. Il devient l'objet de la ligne droite (Netbeans n'ai pas) mais le corps est ok (même dans netbeans IDE de la console). "Häid Jõule" signifie Joyeux Noël en estonien btw 🙂
Alors le problème est probablement pas avec JavaMail, mais avec le codage de la consoles, vous ne savez pas comment changer cela.

OriginalL'auteur Furlando | 2012-12-20