当前位置: 首页 > 知识库问答 >
问题:

Spring Boot-无法使用thymeleaf邮件模板添加内联映像

公冶元青
2023-03-14

我试图像在教程中一样,在thymeleaf电子邮件html模板中添加一个内联图像,但没有任何效果。

这是我在服务类中的方法:

public void sendOrderDetailsEmail(PortfolioModel model)  {  
        try {

          MimeMessage mimeMessage = mailSender.createMimeMessage();
          MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true, "UTF-8");
          Context context = new Context();
          context.setVariable("portfolio", model);
          context.setVariable("products", model.getProducts());
          context.setVariable("logo", "logo");

          String htmlContent = templateEngine.process(ORDER_DETAILS_HTML, context);
          message.addInline("logo", new ClassPathResource("images/logo.png"), "image/png");

          LOG.info("Sending order configuration email to  " + model.getUser().email);
          configureMessage(message, model.getUser().email, "Order details", htmlContent);
          mailSender.send(mimeMessage);
        } catch (Exception e) {
            LOG.error(e);
        }
    }

private void configureMessage(MimeMessageHelper message, String to, String subject, String content) 
{
    message.setFrom(new InternetAddress("myemail@address.org", "info"));
    message.setTo(to);
    message.setSubject(subject);
    message.setText(content, true /* is html */);
}
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://thymeleaf.org">
<head>
</head>
<body>
<p>
    <img src="logo.png" th:src="|cid:${logo}|" />
</p>
<div th:object="${portfolio}">
    <p><span th:utext="${portfolio.user.fullname}"></span></p>
    <p><b>Your order id: </b><span th:utext="${portfolio.orderId}"></span></p>
    <p><b>Order information:</b></p>
   <div th:if="${products} != null">
       <table>
         <tr th:each="product : ${products}">
             - Product:
            <td th:text="${product.model}"></td >
            <td th:text="${product.year}"></td >
            <td th:text="${product.color}"></td >
        </tr>
       </table>
    </div>
</div>
</body>
</html>

共有1个答案

常彭薄
2023-03-14

您需要将消息初始化为Multipart消息,如下所示:

final MimeMessageHelper message = new MimeMessageHelper(mimeMessage, MimeMessageHelper.MULTIPART_MODE_MIXED, "UTF-8"); // true = multipart

仅将multipart设置为true是不够的。

 类似资料:
  • 我正在尝试使用spring应用程序的Thymeleaf模板发送邮件,我在这里引用https://github.com/Thymeleaf/thymeleafexamples-springmail/ 我没有得到任何错误,但它仍然不工作...我使用相同的代码给在github仍然没有运气...谁能建议如何做到这一点?? 下面是用来发送邮件的方法。 如果我删除使用thymeleaf创建html正文的行,并

  • 我在rest api应用程序中使用Springboot 1.5.7,并使用thymeleaf模板从我的api发送电子邮件。但是当我将spring boot的版本更新到2.0.2时,它抛出了404错误,即“错误解析模板”错误,模板可能不存在,或者任何配置的模板解析程序都无法访问“。 下面是application.yml中的配置 pom.xml中的thymeleaf版本 下面是我正在使用的模板结构,

  • 本文向大家介绍springboot中thymeleaf模板使用详解,包括了springboot中thymeleaf模板使用详解的使用技巧和注意事项,需要的朋友参考一下 这篇文章将更加全面详细的介绍thymeleaf的使用。thymeleaf 是新一代的模板引擎,在spring4.0中推荐使用thymeleaf来做前端模版引擎。 thymeleaf介绍 简单说, Thymeleaf 是一个跟 Vel

  • 本文向大家介绍springBoot加入thymeleaf模板的方式,包括了springBoot加入thymeleaf模板的方式的使用技巧和注意事项,需要的朋友参考一下 1.新建springBoot项目 在前面有两种方式 2.加入thymeleaf模板引擎 SpringBoot推荐使用thymeleaf模板引擎 语法简单,功能更强大 要想引入thymeleaf,只需要在pom,xml文件中加入如下依

  • 本文向大家介绍SpringBoot中的Thymeleaf模板,包括了SpringBoot中的Thymeleaf模板的使用技巧和注意事项,需要的朋友参考一下 一、前言     Thymeleaf 的出现是为了取代 JSP,虽然 JSP 存在了很长时间,并在 Java Web 开发中无处不在,但是它也存在一些缺陷: 1、JSP 最明显的问题在于它看起来像HTML或XML,但它其实上并不是。大多数的JS

  • 本文向大家介绍SpringBoot使用thymeleaf模板过程解析,包括了SpringBoot使用thymeleaf模板过程解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了SpringBoot使用thymeleaf模板过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.导入依赖 2.application.yml文件中新