2015-03-18 3 views
0

У меня возникла проблема при отправке электронной почты с использованием 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); 
    } 
} 
+0

Ваша проблема наиболее вероятна в коде, который вызывает 'emailBean.setBody (messageBody)', потому что ваше тело сообщения уже закодировано в этой точке. –

+0

Хммм .... EmailBean - это простое pojo с «частным строковым телом»; переменная. Таким образом, это просто текст html в строчном формате, который я устанавливаю для переменной body. –

ответ

0

Только в случае, если это может помочь другим:

message.setContent(message, "text/html; charset=UTF-8"); 

выше изменение кода фиксированной мой вопрос.

Смежные вопросы