春天启动Thymeleaf电子邮件模板内联图像

时间:2016-11-22 09:18:17

标签: java spring spring-boot thymeleaf

我正在尝试在我的百万美元模板中使用内嵌图像。随后是本手册http://www.thymeleaf.org/doc/articles/springmail.html

由于未知原因未发送图像,我也没有收到任何错误。

模板中的

 <img src="image_name.png" th:src="|cid:${imageResourceName}|"/>

发送电子邮件:

@Autowired
private JavaMailSender mailSender;

@Autowired
private SpringTemplateEngine templateEngine;

@Value(value = "classpath:templates/mails/listing/images/img11.png")
private Resource logoImageResource;

public boolean sendRichEmail(String receipient, EmailType emailType) {
    EmailMessageConstructor emailMessageConstructor = new EmailMessageConstructor(emailType);

    String recipientAddress = receipient;
    String subject = emailMessageConstructor.getEmailTopic();
    String from = "no-reply@xxx.com";

    MimeMessage mimeMessage = mailSender.createMimeMessage();
    MimeMessageHelper helper = null;
    try {
        helper = new MimeMessageHelper(mimeMessage, true, "utf-8");

        final Context ctx = new Context();
        ctx.setVariable("name", "User1");
        ctx.setVariable("dateNow", new Date());
        ctx.setVariable("dateExpired", MyUtils.addDays(new Date(), 30));

        final String htmlContent = this.templateEngine.process(emailMessageConstructor.getEmailTemplate(), ctx);
        mimeMessage.setContent(htmlContent, "text/html");

        // Add the inline image, referenced from the HTML code as "cid:${imageResourceName}"
        try {
            String imageResourceName = logoImageResource.getFilename();
            String imageContentType = new MimetypesFileTypeMap().getContentType(logoImageResource.getFile());
            final InputStreamSource imageSource = new ByteArrayResource(IOUtils.toByteArray(logoImageResource.getInputStream()));
            helper.addInline(imageResourceName, imageSource, imageContentType);
        } catch (IOException e) {
            e.printStackTrace();
        }


        helper.setTo(new InternetAddress(recipientAddress));
        helper.setSubject(subject);
        try {
            helper.setFrom(new InternetAddress(from, "xxx"));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        mailSender.send(mimeMessage);
    } catch (MessagingException e) {
        logger.error("Message creation exception: "+e.getMessage());
    }
    return true;
}

想要使用

中的图片
/resources/templates/mails/listing/images/img11.png

0 个答案:

没有答案