2011-05-03 373 views
1

我們目前正在研究一個缺陷,以允許在電子郵件主題中看到特殊符號。該電子郵件是text/html MIME類型。電子郵件主題中的特殊符號

目前,如果主題應該有心臟符號,它會顯示爲「&心臟」,但在電子郵件正文中會顯示「心臟」符號。

有人可以幫助我們解決方案有特殊符號也是主題的一部分嗎?

這是代碼片段。

public boolean send(String to, String from, String subject, String templatePath, Map map) { 
// create a mime message using the mail sender implementation 
MimeMessage mimeMessage = mailSender.createMimeMessage(); 

// create the message using the specified template 
MimeMessageHelper helper; 
try 
{ 

    helper = new MimeMessageHelper(mimeMessage, true, "UTF-8"); 
    helper.setTo(to); 
    helper.setSubject(subject); 
    helper.setFrom(from); 

    String text = VelocityEngineUtils.mergeTemplateIntoString(engine, templatePath, map); 
    helper.setText(text, true); 
    send(mimeMessage); 
    log.debug("in send at start" + this.getClass().getName() 
      + ":SUCCESS: Sendig mail to" + to + " from " + from + " subject " 
      + subject); 
} catch (MessagingException e) 
{ 
    throw new MailPreparationException("unable to create the mime message helper", e); 
} catch (Exception e) 
{ 
    log.debug("in send at start" + this.getClass().getName() + ":Failed sending mail" 
      + to + " from " + from + " subject " + subject); 
    // throw new 
    // MailPreparationException("unable to create the mime message helper", 
    // e); 
} 
return false; 

} 公共布爾發送(的MimeMessage的MimeMessage)拋出異常{

try 
{ 

    Multipart multipart = new MimeMultipart(); 
    BodyPart bodyPart = new MimeBodyPart(); 
    multipart.addBodyPart(bodyPart); 
    bodyPart.setContent(mimeMessage.getContent(), "text/html"); 
    mimeMessage.setContent(multipart); 
    mailSender.send(mimeMessage); 
} catch (Exception e) 
{ 
    log.error("in send at start" + this.getClass().getName() + ":Failed sending mail" 
      + e.getMessage()); 

    // e.printStackTrace(); 
    throw e; 
    // return false; 
} 
return true; 

}

+0

請接受一些你曾經問過的問題的答案 - 你會發現人們更願意幫助你,這使得StackOverflow變得更加美好。 – 2011-05-09 16:43:39

回答

2
public static String HTMLDecode(String encodedHTML) { 

     return encodedHTML.replaceAll("¡", "\u00A1") 
          .replaceAll("¢", "\u00A2") 
          .replaceAll("£", "\u00A3") 
          .replaceAll("¤", "\u00A4") 
          .replaceAll("¥", "\u00A5") 
          .replaceAll("¦", "\u00A6") 
          .replaceAll("§", "\u00A7") 
          .replaceAll("¨", "\u00A8") 
          ........ 
+0

讓我知道是否有人想要這個方法的整個代碼...乾杯 – Sandeep 2011-05-10 05:56:36

+0

我有同樣的問題。像「\ u0044」這樣的常用符號會轉換爲「D」,但像「\ u00A1」這樣的特殊符號會轉換爲「?」。在電子郵件主題... – Stargazer 2016-04-13 13:21:18

1

可以爲Unicode/UTF-8發送。

+0

我們通過編寫一個將編碼htmll轉換爲utf-8的方法來解決這個問題 – Sandeep 2011-05-10 05:54:23