Tôi đang gửi email và tôi nhận được email chính xác nhưng mã hóa của chủ đề không chính xác. Tôi đang gửi "invitación" nhưng tôi nhận được "invitaci? N". Nội dung của tin nhắn là OK.Sự cố với mã hóa chủ đề khi gửi email
Nội dung của thông điệp đến từ việc chuyển đổi Mẫu tốc độ trong khi chủ đề được đặt trong biến Chuỗi.
Tôi đã googled xung quanh và tôi đã thấy rằng một số người nói rằng MimeUtility.encodeText() có thể giải quyết vấn đề, nhưng tôi đã không thành công với nó.
Tôi làm cách nào để khắc phục sự cố? Đây là mã tôi có cho đến nay.
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) {
...
}
Cảm ơn
Chỉ lớp con được gửi đi của 'Thông điệp' là' MimeMessage'. Tôi nghi ngờ rằng ai đó đã triển khai một lớp con khác. JavaMail sẽ ít gắt gỏng hơn nếu chúng chỉ thu gọn 'javax.mail' và' javax.mail.internet' - lớp trừu tượng bổ sung đó có nghĩa là bạn liên tục truyền đến lớp con. – dkarp
Điều này không giải quyết được vấn đề của tôi (gửi biểu tượng £ trong dòng chủ đề) –
@Mark: Bạn đã thử 'msg.setSubject (" \ u00a3 "," UTF-8 ")' và nó không mã hóa đối tượng đúng cách? Tiêu đề Chủ đề kết quả là gì? – dkarp