Как получить данные из html с помощью thymeleaf? - PullRequest
0 голосов
/ 31 января 2019

Я использую thymeleaf для отправки сообщения по почте, я использую 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;
}

enter image description here

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

Ответы [ 3 ]

0 голосов
/ 31 января 2019

По 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());
...
}
0 голосов
/ 31 января 2019
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);}

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

0 голосов
/ 31 января 2019

Пожалуйста, измените ваш 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...