Java-E-Mail unterstützt keine UTF-8-Zeichen im Betreff der E-Mail
Hier ist mein code einstellen Betreff der E-Mail:
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);
Aber noch in der Betreffzeile der E-Mail, es zeigt immer noch wie "Your new InCites™ subscription"
- So... das problem ist, dass die E-Mail-client zeigt Ihnen genau, was Sie sehen wollen?
- Ich bin versucht, UTF-8-Zeichen-Unterstützung in der Betreffzeile der E-Mail. Aber noch kann ich nicht in der Lage zu tun, dass im Betreff der E-Mail
- Wie unterstützt die UTf-8-Zeichen in die Betreffzeile der E-Mail mit MimeMessage oder gibt es eine andere Möglichkeit, das zu tun?
- Ignacio Vazquez-Abrams: Das problem ist, ich bin Einstellung der UTF code für " TM " - symbol. In der E-Mail-client Körper es dekodiert Ordnung in das symbol, sondern in der Betreff-es wird der code anstelle der Decodierung in die " TM " - symbol.
- Sie sind mit HTML-Codierung zum codieren eines Charakter und Ihre E-mail-client angezeigt wird, wird die codierte Daten. Schlägt mich, warum Sie havent versucht, mit dem Charakter, wie Sie ist.
- Es ist der Unicode für das symbol " TM " (z.B. Trade-Mark-Symbol)
- Nein, es ist nicht. U+2122 ist der Unicode-codepoint für
™
. Was Sie haben ist ein Haufen von ASCII-Zeichen. - Ignacio Vazquez-Abrams: Kann u senden Sie mir den code zum einbinden-trade-mark-symbol in der Betreffzeile der E-Mail
- Ignacio Vazquez-Abrams: Bitte finden Sie den code. In den Körper der E-Mail das Markenzeichen-symbol-code ist entschlüsselt perfekt, aber in dem Thema spiegelt es als code selbst
- Ich werde ganz offen sein. Sie müssen verstehen, wie die E-mail-client führt die Dekodierung von E-mail-Nachrichten. Der Körper wird wahrscheinlich angezeigt, mit einem HTML-renderer und das ist der Grund, warum HTML-Codierung arbeitet im Körper. Es wird nicht die gleiche sein für das Thema, und dass Sie uns, warum einige Leute haben empfohlen, die Verwendung der UTF-8-Zeichen (in der Weise, dass es dargestellt werden kann Java-source-code). Über eine HTML-codierte Zeichen in einem solchen Ort wird man nicht überall, da die HTML-Codierung verwendet ASCII.
- Vineet Reynolds : Danke für Ihre Klarstellung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem Thema, das Sie hier erwähnen, besteht komplett aus ASCII-Zeichen. Dies beinhaltet die lustigen Sonderzeichen
™
. Wenn Sie möchten, es zu sein, Unicode, nur Unicode verwenden und nicht das HTML-escaping. Mails haben nichts zu tun mit HTML.Dieser encodieren solltest das Thema als so etwas wie
=?UTF-8?Q?Your...subscription?=
wie angegeben in RFC 2047.Den kompletten Beispiel-code:
Die Ausgabe:
Können Sie sehen, dass der Betreff ist verschlüsselt, und das ist notwendig und richtig.
[Update: ich der festen Unicode-escape-Sequenz, wie bereits in einem meiner Kommentare.]
?
ist nur in der Eclipse-Konsole. Wenn Sie die Konsole konfigurieren, um zu zeigen, UTF-8 wird es da sein. Es ist unter "Ausführen ->" Konfigurationen Ausführen "- > Common -> Konsole-Codierung".text/html
Sie nicht beeinflussen, das Thema in irgendeiner Weise. Geben Sie einfach die (tm) - symbol als ein gewöhnliches Zeichen (nicht HTML-codiert), und es wird funktionieren.™
um eine Unicode-escape-Sequenz in Java ist\u2122
, nicht\u8482
.