2011-05-03 5 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의)는 유니 코드/UTF-8로 보낼 수 있습니다 예외 {

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를 더 좋은 곳으로 만들어줍니다. –

답변

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

+0

동일한 문제가 있습니다. "\ u0044"와 같은 일반적인 기호는 "D"로 변환되지만 "\ u00A1"과 같은 특수 기호는 "?"로 변환됩니다. 이메일 제목에 ... – Stargazer

1

가 발생합니다.

+0

encode htmll을 utf-8로 변환하는 메서드를 작성하여이 문제를 해결했습니다. – Sandeep