无法使用百里香叶模板引擎准备带有内联图像的邮件?



我正在尝试发送一封带有使用 spring mvc 和 Thymeleaf 附加内联图像的 html 电子邮件。我的代码无需附加图像即可工作。我成功收到没有图像的 html 电子邮件。但是当我将以下行添加到我的代码中时,我收到以下错误消息。

没有

这行代码就可以工作,我收到没有图像的电子邮件:

 message.addInline(image.getName(), imageSource,  image.getContentType());

这是方法:

public void sendUserRegisterEmail(String receiver, String receiverEmailAddress){
    MimeMessagePreparator preparator = new MimeMessagePreparator() {
        public void prepare(MimeMessage mimeMessage) throws Exception {
            Path path = Paths.get("/assets/dist/img/dialog_tv_logo-white-01.png");
            String fileName = "dialog_tv_logo-white-01.png";
            String originalFileName = "dialog_tv_logo-white-01.png";
            String contentType = "image/png";
            byte[] content = null;
            try {
                content = Files.readAllBytes(path);
            } catch (final IOException e) {
            }
            MultipartFile image = new MockMultipartFile(fileName,
                    originalFileName, contentType, content);
            Locale locale = Locale.getDefault();
            final Context ctx = new Context(locale);
            ctx.setVariable("name", receiver);
            ctx.setVariable("subscriptionDate", new Date());
            ctx.setVariable("imageResourceName", image.getName());
            MimeMessageHelper message = new MimeMessageHelper(mimeMessage);
            message.setSubject(USER_REGISTER_MESSAGE_SUBJECT);
            message.setTo(receiverEmailAddress);
            message.setFrom(SENDER_EMAIL_ADDRESS);
            final String htmlContent = emailTemplateEngine.process("email-inlineimage", ctx);
            message.setText(htmlContent, true /* isHtml */);
            final InputStreamSource imageSource = new ByteArrayResource(image.getBytes());
            message.addInline(image.getName(), imageSource,  image.getContentType());
           }
    };
    sendEmail(preparator);
}  

添加图像准备行时,我收到以下错误消息:

 org.springframework.mail.MailPreparationException: Could not prepare mail; nested exception is java.lang.IllegalStateException: Not in multipart mode - create an appropriate MimeMessageHelper via a constructor that takes a 'multipart' flag if you need to set alternative texts or add inline elements or attachments.

任何人都可以弄清楚这里的问题是什么吗?

经过大量努力,终于能够修复错误。更改以下行解决了此问题。通过传递 true 创建 MimeMessageHelper

MimeMessageHelper message = new MimeMessageHelper(mimeMessage, true);

相关内容

  • 没有找到相关文章

最新更新