Java Mail ne supporte pas les Caractères UTF-8 dans le Sujet de l'email
Voici mon code de paramètre de l'objet de l'email:
String bodyMessage="Dear Renavçilçleç Françoisç InCites™";
String subject = "Your new InCites™ subscription";
Properties _sessionProperties = new Properties();
_sessionProperties.put("mail.transport.protocol", "smtp");
_sessionProperties.put("mail.smtp.host", "hostname");
_sessionProperties.put("mail.smtp.port", "25");
Session session = Session.getInstance(_sessionProperties, null);
MimeMessage mimemsg = new MimeMessage(session);
mimemsg.addRecipients(Message.RecipientType.TO, "[email protected]");
mimemsg.setSubject(subject, "UTF-8");
//Create a multi-part message
MimeMultipart multipart = new MimeMultipart();
//Set the subType
multipart.setSubType("alternative");
BodyPart part = new MimeBodyPart();
part.setContent(bodyMessage, "charset=UTF-8");
//Set the emailBody and emailType to MIME BodyPart
part.setDataHandler(new DataHandler(new ByteArrayDataSource(
bodyMessage, "text/html;")));
//Add the MIME BodyPart to MIME multiPart
multipart.addBodyPart(part);
//Put parts in message
mimemsg.setContent(multipart);
//Send message
Transport.send(mimemsg);
Mais encore dans l'objet du courriel, il montre encore que "Your new InCites™ subscription"
Donc... le problème est que le client de messagerie est de vous montrer exactement ce que vous voulez voir?
Je suis en train de mettre en UTF-8 prise en charge des caractères en objet de l'email. Mais encore je ne peux pas en mesure de le faire dans le sujet de l'email
Comment soutenir les caractères UTf-8 dans le Sujet de l'e-mail à l'aide de MimeMessage ou est-il un autre moyen pour le faire?
Ignacio Vazquez-Abrams: Le problème est que je suis en train d'UTF code pour 'TM' symbole. Dans le client de messagerie corps, il décode amende dans ce symbole, mais dans le sujet, il affiche le code au lieu de les décoder en 'TM' symbole.
Je vais être direct. Vous avez besoin de comprendre comment le client de messagerie effectue le décodage des messages de courrier électronique. Le corps est susceptible d'affiché à l'aide d'un convertisseur HTML et c'est pourquoi le codage HTML fonctionne dans le corps. Il n'en sera pas de même pour le sujet, et que nous la raison pour laquelle plusieurs personnes ont recommandé d'utiliser les caractères UTF-8 (dans la façon dont il peut être représenté dans le code source de Java). À l'aide d'un code HTML caractère codé dans un tel endroit ne sera pas vous obtenir n'importe où parce que le codage HTML emploie l'utilisation de l'ASCII.
Je suis en train de mettre en UTF-8 prise en charge des caractères en objet de l'email. Mais encore je ne peux pas en mesure de le faire dans le sujet de l'email
Comment soutenir les caractères UTf-8 dans le Sujet de l'e-mail à l'aide de MimeMessage ou est-il un autre moyen pour le faire?
Ignacio Vazquez-Abrams: Le problème est que je suis en train d'UTF code pour 'TM' symbole. Dans le client de messagerie corps, il décode amende dans ce symbole, mais dans le sujet, il affiche le code au lieu de les décoder en 'TM' symbole.
Je vais être direct. Vous avez besoin de comprendre comment le client de messagerie effectue le décodage des messages de courrier électronique. Le corps est susceptible d'affiché à l'aide d'un convertisseur HTML et c'est pourquoi le codage HTML fonctionne dans le corps. Il n'en sera pas de même pour le sujet, et que nous la raison pour laquelle plusieurs personnes ont recommandé d'utiliser les caractères UTF-8 (dans la façon dont il peut être représenté dans le code source de Java). À l'aide d'un code HTML caractère codé dans un tel endroit ne sera pas vous obtenir n'importe où parce que le codage HTML emploie l'utilisation de l'ASCII.
OriginalL'auteur Kalyan Raju | 2010-12-10
Vous devez vous connecter pour publier un commentaire.
Le sujet que vous mentionnez ici se compose entièrement de caractères ASCII. Cela inclut les drôles de caractères spéciaux
™
. Si vous voulez qu'il soit de l'Unicode, il suffit d'utiliser Unicode et non pas la version HTML de s'échapper. Mails n'ont rien à voir avec le HTML.Ce doit coder le sujet comme quelque chose comme
=?UTF-8?Q?Your...subscription?=
, comme spécifié dans RFC 2047.L'exemple de code complet:
La sortie:
Vous pouvez voir que le sujet de l'en-tête est codé, et que cela est nécessaire et de les corriger.
[Mise à jour: j'ai corrigé de la séquence d'échappement Unicode, comme indiqué dans un de mes commentaires.]
Je sais. Le
?
est seulement affiché dans l'Éclipse de la console. Si vous configurez la console pour afficher l'UTF-8, il sera là. C'est sous "Exécuter -> Exécuter les configurations ->- > Console d'Encodage".Veuillez consulter mon code mis à jour dans la question
Je suis à la recherche de la sortie dans le client Microsoft outlook. Et mon corps du message n'est pas de type "text/plain" il est "text/html"
Que signifie encore que l'objet de l'email n'a rien à voir avec le HTML. En disant que le corps est
text/html
, vous n'influence pas l'objet d'une quelconque façon. Il suffit de passer la (tm) symbole comme un caractère ordinaire (pas codé en HTML), et il va fonctionner.OriginalL'auteur Roland Illig