電子メールを送信していますが、正しく受信しましたが、件名のエンコードが正しくありません。私は "invitación"を送りますが、私は "invitaci?n"を受け取ります。メッセージの内容はOKです。電子メールを送信するときの件名エンコードの問題
メッセージの内容は、対象が文字列変数に設定されている間にVelocityテンプレートの変換から来ています。
私はグーグルで調べましたが、MimeUtility.encodeText()が問題を解決できると言う人もいますが、私はそれで成功しませんでした。
どうすれば問題を解決できますか?これはこれまでのコードです。
String subject = "Invitación";
String msgBody = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, "/vmTemplates/template.vm", "UTF-8", model);
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
try {
String encodingOptions = "text/html; charset=UTF-8";
Message msg = new MimeMessage(session);
msg.setHeader("Content-Type", encodingOptions);
msg.setFrom(new javax.mail.internet.InternetAddress(emailFrom));
msg.addRecipient(Message.RecipientType.TO, new InternetAddress(emailTo));
msg.setSubject(subject);
msg.setContent(msgBody, encodingOptions);
Transport.send(msg);
} catch (AddressException e) {
...
} catch (MessagingException e) {
...
}
おかげ
'Message'の唯一のサブクラスは' MimeMessage'です。誰かが別のサブクラスを実装しているかどうかは疑問だ。 JavaMailは、javax.mailとjavax.mail.internetを崩壊させただけではあまり意味がありません。抽象レイヤーが追加されているということは、常にサブクラスにキャストしていることを意味します。 – dkarp
これは私の問題を解決しませんでした(件名に£記号を送信) –
@マーク: 'msg.setSubject(" \ u00a3 "、" UTF-8 ")'を試しました。結果のSubjectヘッダーには何が入っていましたか? – dkarp