2017-01-11 15 views
3

Я пытаюсь отправить сообщение plain text от приложения Spring от Thymeleaf.Как обрабатывать шаблон электронной почты TXT с помощью Thymeleaf?

Это моя служба электронной почты:

@Override 
public void sendPasswordToken(Token token) throws ServiceException { 
    Assert.notNull(token); 

    try { 

     Locale locale = Locale.getDefault(); 

     final Context ctx = new Context(locale); 
     ctx.setVariable("url", url(token)); 

     // Prepare message using a Spring helper 
     final MimeMessage mimeMessage = mailSender.createMimeMessage(); 

     final MimeMessageHelper message = new MimeMessageHelper(
       mimeMessage, false, SpringMailConfig.EMAIL_TEMPLATE_ENCODING 
     ); 

     message.setSubject("Token"); 
     message.setTo(token.getUser().getUsername()); 

     final String content = this.textTemplateEngine.process("text/token", ctx); 
     message.setText(content, false); 

     mailSender.send(mimeMessage); 

    } catch (Exception e) { 
     throw new ServiceException("Token has not been sent", e); 
    } 
} 

электронная почта отправляется и доставляется в почтовый ящик.

Это мой шаблон plain text электронной почты:

Токена URL: $ {URL}

но поставляются переменным почтовый ящик url не заменяется его значение. Зачем?

Когда я использую html классический синтаксис HTML Thymeleaf, переменная заменяется:

<span th:text="${url}"></span> 

Что такое правильный синтаксис для текста шаблона электронной почты?

+1

Почему downvoted? – Artegon

ответ

7

Вы можете использовать Thymeleaf в режиме обычного текста, а также, как в этом примере:

Dear [(${customer.name})], 

This is the list of our products: 
[# th:each="p : ${products}"] 
    - [(${p.name})]. Price: [(${#numbers.formatdecimal(p.price,1,2)})] EUR/kg 
[/] 
Thanks, 
    The Thymeleaf Shop 

Это означает, что вы можете иметь текстовый файл только с этим в нем:

Token url: [(${url})] 

Take посмотреть на полную документацию этих функций здесь:

https://github.com/thymeleaf/thymeleaf/issues/395

Edit

Как уже упоминалось в комментариях, обязательно используйте версию> 3 из Thymeleaf:

<properties> 
    <thymeleaf.version>3.0.3.RELEASE</thymeleaf.version> 
    <thymeleaf-layout-dialect.version>2.1.2</thymeleaf-layout-dialect.version> 
</properties> 
+0

, что является хорошим дополнением к версии 3, как говорится в этом вопросе. спасибо за публикацию. –

+2

Да, вы правы. Я использовал пакет зависимостей Thymeleaf 'starter' от Spring, и он добавил Thymeleaf в версии 2.x. Когда я удалял версию 2 и обновлялся до версии 3, синтаксис работает, и, как вы упомянули, это рекомендуется. – Artegon

0

Используйте HTML-шаблон, подобный этому, и он будет передавать обычный текст.

<html xmlns:th="http://www.thymeleaf.org" th:inline="text" th:remove="tag"> 
Token url: [[${url}]] 
</html> 

другой путь, по-прежнему с помощью HTML может быть, как это

<span th:text="Token url:" th:remove="tag"></span><span th:text="${url}" th:remove="tag"></span> 

То, что вы ищете, чтобы произвести plain text так thymeleaf вернется, что для вас.

+0

Это официальный путь или обходной путь? – Artegon

+0

Это правильный способ сделать это. Я имею в виду действительный способ сделать это, я не уверен, что это официальный или нет, я знаю, что это работает. –

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

  • Нет связанных вопросов^_^