Wysyłam wiadomość e-mail i otrzymuję ją poprawnie, ale kodowanie tematu jest nieprawidłowe. Wysyłam "invitación", ale otrzymuję "invitaci? N". Treść wiadomości jest OK.Problem z kodowaniem tematu podczas wysyłania wiadomości e-mail
Treść wiadomości pochodzi z transformacji szablonu prędkości, gdy temat jest ustawiony w zmiennej String.
Mam googleed wokół i widziałem, że niektórzy ludzie mówią, że MimeUtility.encodeText() może rozwiązać problem, ale nie miałem z nim żadnego sukcesu.
Jak mogę rozwiązać problem? To jest kod, który do tej pory miałem.
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) {
...
}
Dzięki
Jedyną dostarczoną podklasą 'Message' jest' MimeMessage'. Wątpię, czy ktoś zaimplementował inną podklasę. JavaMail byłby mniej groteskowy, gdyby właśnie zwinął 'javax.mail' i' javax.mail.internet' - ta dodatkowa warstwa abstrakcji oznacza, że ciągle rzucasz się na podklasę. – dkarp
To nie rozwiązało mojego problemu (wysłanie symbolu GBP w temacie). –
@ Mark: Próbowałeś 'msg.setSubject (" \ u00a3 "," UTF-8 ")' i nie zakodowałeś tematu prawidłowo? Co znajdowało się w wynikowym nagłówku tematu? – dkarp