Sto inviando una e-mail e la sto ricevendo correttamente ma la codifica del soggetto non è corretta. Sto inviando "invitación" ma sto ricevendo "invitaci? N". Il contenuto del messaggio è OK.Problema con la codifica dell'oggetto quando si invia una e-mail
Il contenuto del messaggio proviene da una trasformazione di un modello di velocità mentre il soggetto è impostato in una variabile String.
Ho cercato su google e ho visto che alcune persone dicono che MimeUtility.encodeText() potrebbe risolvere il problema, ma non ho avuto successo con esso.
Come posso risolvere il problema? Questo è il codice che ho finora.
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) {
...
}
Grazie
L'unica sottoclasse spedita di 'Message' è' MimeMessage'. Dubito che qualcuno abbia implementato un'altra sottoclasse. JavaMail sarebbe meno brutto se collassassero semplicemente 'javax.mail' e' javax.mail.internet' - quel livello aggiuntivo di astrazione significa semplicemente che stai costantemente lanciando alla sottoclasse. – dkarp
Questo non ha risolto il mio problema (inviando il simbolo £ nell'oggetto) –
@Mark: hai provato 'msg.setSubject (" \ u00a3 "," UTF-8 ")' e non ha codificato correttamente il soggetto? Cosa c'era nell'intestazione dell'oggetto risultante? – dkarp