У меня возникла проблема при отправке электронной почты с использованием JMS, когда контент имеет символы с акцентом.Проблема кодирования символов с почтовым сервером JMS
Сообщение помещается в очередь и помещается как сообщение объекта. Слушатель прослушивает сообщение и доставляет его на почтовый сервер.
Все работает нормально на моем локальном сервере. Однако, когда я запускаю то же самое на сервере производства Solaris, символы акцента становятся испорченными. В пределах содержимого электронной почты он печатает De Le n для De León. В принципе, символы акцента не кодируются и отображаются вопросительный знак [ ].
Любая помощь по этому вопросу высоко ценится. Ниже приведен код, который я использую для доставки сообщений.
private void sendEmailMessage(EmailBean emailBean) {
System.out.println("SendReceivedEmailMessages::sendEmail()");
try {
if (emailBean.getFromAddresses() != null && !emailBean.getFromAddresses().isEmpty()) {
Properties existingProperties = session.getProperties();
existingProperties.put("mail.from", emailBean.getFromAddresses());
session = Session.getInstance(existingProperties);
}
String DELIMITER = ";";
String subject = emailBean.getSubject();
String msgText = emailBean.getBody();
MimeMessage message = new MimeMessage(session);
message.setSubject(subject);
message.setContent(message, "text/html");
InternetAddress[] toAddressList = parseRecipients(emailBean.getToAddresses(), DELIMITER);
InternetAddress[] ccAddressList = parseRecipients(emailBean.getCcAddresses(), DELIMITER);
InternetAddress[] bccAddressList = parseRecipients(emailBean.getBccAddresses(), DELIMITER);
message.setRecipients(javax.mail.Message.RecipientType.TO, toAddressList);
message.addRecipients(javax.mail.Message.RecipientType.CC, ccAddressList);
message.addRecipients(javax.mail.Message.RecipientType.BCC, bccAddressList);
Multipart multipart = new MimeMultipart();
if (emailBean.getFileByteArrRegular() != null) {
addAttachmentFiles(multipart, emailBean.getFileByteArrRegular(), emailBean.getFilename() + "_Regular.docx", msgText);
}
if (emailBean.getFileByteOthers() != null) {
addAttachmentFiles(multipart, emailBean.getFileByteOthers(), emailBean.getFilename() + ".docx", msgText);
} else {
addAttachmentFiles(multipart, null, null, msgText);
}
message.setContent(multipart);
Transport.send(message);
} catch (MessagingException ex) {
Logger.getLogger(SendReceiveEmailMessages.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
Logger.getLogger(SendReceiveEmailMessages.class.getName()).log(Level.SEVERE, ex.getStackTrace()[0].toString(), ex);
} catch (Exception ex) {
Logger.getLogger(SendReceiveEmailMessages.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
Logger.getLogger(SendReceiveEmailMessages.class.getName()).log(Level.SEVERE, ex.getStackTrace()[0].toString(), ex);
}
}
Ваша проблема наиболее вероятна в коде, который вызывает 'emailBean.setBody (messageBody)', потому что ваше тело сообщения уже закодировано в этой точке. –
Хммм .... EmailBean - это простое pojo с «частным строковым телом»; переменная. Таким образом, это просто текст html в строчном формате, который я устанавливаю для переменной body. –