Как получить данные из html с помощью тимелеафа?

Я использую тимелеаф для отправки сообщения по почте, я использую Contex() для установки переменных, которые имеют пользовательские поля. В чем проблема? Проблема в том, что при отправке данных из шаблона с почты отправляется весь html код, а нужно только сообщение. думаю по коду будет понятнее

 Context context = new Context();
    context.setVariable("name", user.getUsername());
    context.setVariable("activationCode", user.getActivationCode());
    MvcConfig mvcConfig = new MvcConfig();
    TemplateEngine templateEngine = mvcConfig.templateEngine();
    String text = templateEngine.process("email-template",context);
    if (!org.springframework.util.StringUtils.isEmpty(user.getEmail())) {
        //TODO: move to template

        mailSenderService.send(user.getEmail(), "Activation code", text);
    }




@Bean
@Description("Thymeleaf template engine with Spring integration")
public SpringTemplateEngine templateEngine() {
    SpringTemplateEngine templateEngine = new SpringTemplateEngine();
    templateEngine.addTemplateResolver(new UrlTemplateResolver());
    templateEngine.setTemplateResolver(templateResolver());
    return templateEngine;
}

Как получить данные из html с помощью тимелеафа?

в таком виде приходит на почту, а должно быть примерно так Привет, дорогая, лаза Добро пожаловать. Посетите http://aa.ru/activate-account/blalblalbla

Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
0
0
154
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Измените метод templateEngine() следующим образом:

@Bean
public ITemplateEngine htmlTemplateEngine() {
   SpringTemplateEngine templateEngine = new SpringTemplateEngine();
   ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
   templateResolver.setPrefix("/");
   templateResolver.setSuffix(".html");
   templateResolver.setTemplateMode(TemplateMode.HTML); // Important line is here for HTML!!!
   templateResolver.setCacheable(false);
   templateEngine.setTemplateResolver(templateResolver);
   return templateEngine;
}

Обратите внимание на строку TemplateMode.HTML

ничего не меняй, тот же результат

Самир Шахмурадлы 31.01.2019 13:19

Согласно https://www.thymeleaf.org/doc/articles/springmail.html

private ITemplateResolver htmlTemplateResolver() {
        final ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
        templateResolver.setOrder(Integer.valueOf(2));
        templateResolver.setResolvablePatterns(Collections.singleton("html/*"));
        templateResolver.setPrefix("/mail/");
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode(TemplateMode.HTML);
        templateResolver.setCharacterEncoding(EMAIL_TEMPLATE_ENCODING);
        templateResolver.setCacheable(false);
        return templateResolver;
    }

И

    @Bean
        public TemplateEngine emailTemplateEngine() {
            final SpringTemplateEngine templateEngine = new SpringTemplateEngine();
     // Resolver for HTML emails (except the editable one)
            templateEngine.addTemplateResolver(htmlTemplateResolver());
...
}

конфликт типов ClassLoaderTemplateResolver и ITemplateResolver

Самир Шахмурадлы 31.01.2019 13:30

не найти шаблон

Самир Шахмурадлы 31.01.2019 13:48

Ты единственный, кто может это сделать ;)

Simon 01.02.2019 08:21
Ответ принят как подходящий
public void send(String emailTo, String subject, String message,String content) throws MessagingException {
    MimeMessage mimeMessage = mailSender.createMimeMessage();
    mimeMessage.setSubject(subject);
    mimeMessage.setContent(content, "HTML5");
    MimeMessageHelper helper;
    helper = new MimeMessageHelper(mimeMessage, true);
    helper.setFrom(username);
    helper.setTo(emailTo);
    helper.setText(message,true);
    mailSender.send(mimeMessage);}

я добавляю контент в метод отправки почты, это решает проблему

Другие вопросы по теме