2011-01-04 2 views
1

Может кто-нибудь сказать мне, как вставлять символы новой строки в содержание электронной почты. Я использую этот фрагмент кода для отправки писем.Весенняя электронная почта и новый символ линии

public boolean sendMail(final Account player, final Object tl, final String type) 
{ 
    MimeMessagePreparator preparator = new MimeMessagePreparator() { 
     public void prepare(MimeMessage mimeMessage) throws Exception 
     { 
      MimeMessageHelper message = new MimeMessageHelper(mimeMessage); 

      String msgAdmin = msgFrom; 
      message.setTo(player.getEmail()); // TODO: changed from msgAdmin to player.getEmail() 
      message.setFrom(msgFrom); 
      message.setSubject(type + " invitation"); 
      Map model = new HashMap(); 
      model.put("tl", tl); 
      model.put("player", player); 
      model.put("type", type); 
      String text = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, 
        "com/test/mail/invite.vm", model); 
      logger.debug(text); 
      message.setText(text, true); 
     } 
    }; 
    return sendMail(preparator); 
} 

Я пробовал символы в содержимом электронной почты. Но, похоже, это не работает. HTML-разметка, как тег BR, работает, но я не хочу добавлять html-разметки в содержимое электронной почты. Возможно ли любое другое решение?

+0

см. Http://stackoverflow.com/questions/4549427/velocity-templates-newline – serg

ответ

1

Новые символы символов и скоростные шаблоны являются хорошо документированной проблемой. Лучшим обходным решением является скрыть «\ n» как значение свойства, которое вы предоставляете шаблону. Затем укажите это свойство.

+0

Кажется, что это не работает. – user378101

+0

Разбейте эту проблему на куски. Распечатайте текст своего сообщения перед отправкой. Есть ли новая линия? Некоторые почтовые клиенты (Outlook - один) будут лишать некоторые новые строки. Иногда вам нужно удвоить символы новой строки, чтобы заставить его относиться к нему как к абзацу. –

2

На самом деле проблема заключается в том, когда вы вызываете message.setText, вы устанавливаете второй аргумент в true. Это означает, что сообщение интерпретируется как HTML. Чтобы отображались новые строки электронной почты, просто установите для второго аргумента значение false.