提问人:Gobanit 提问时间:7/26/2023 最后编辑:Gobanit 更新时间:7/26/2023 访问量:47
如何使用 Micronaut 在 html 电子邮件中添加内联图像
How to add inline image in html email with Micronaut
问:
我正在使用 Micronaut 作为 Web 应用程序,我需要发送电子邮件。我们使用速度模板作为电子邮件正文,我们需要在文本中包含图像。我发现有 3 种方法:
- Base64 编码图像
- 内容 ID 附件
- 全局网址链接
由于大多数邮件客户端不支持 html 中的 Base64 编码图像,并且由于提供的图像不公开可用,因此我尝试了内容 ID 附件。但是我无法让它与 Micronaut 一起工作。
这是我有一个简化的代码片段:
Map<String, String> modelMap = new HashMap<>();
modelMap.put("xyz", "aaaaaaa");
TemplateBody<Map<String, String>> body =
new TemplateBody<>("mail/mail-body.vm", modelMap);
byte[] image = IOUtils.resourceToByteArray("logo.png", getClass().getClassLoader());
Attachment logoAttachment = Attachment.builder()
.id("logo")
.filename("something.png")
.contentType(MediaType.IMAGE_PNG)
.content(image)
.build();
Email.Builder emailBuilder = Email.builder()
.from(sender)
.to(recipient)
.subject("some-subject")
.body(body)
.attachment(createLogoAttachment());
emailSender.send(emailBuilder);
velocity html 模板如下所示:
<div>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
</p>
<p>
do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
</p>
<p>
minim veniam
</p>
<p>
quis nostrud exercitation ullamco laboris nisi ut - ${xyz}
</p>
<img src="cid:logo" alt="this is logo image"/>
</div>
但这样一来,图像只是一个常规附件,而不是嵌入到 html 内容中。将改为显示替代文本。我怎样才能告诉 Micronaut 这个附件应该是内联的?似乎根本没有使用我提供的id属性,html正文看不到附件。
原始邮件如下所示:
MIME-Version: 1.0
------=_Part_0_2107679308.1690376383642
Content-Type: multipart/alternative;
boundary="----=_Part_1_706751112.1690376383646"
------=_Part_1_706751112.1690376383646
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: 7bit
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><div>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed
</p>
<p>
do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
</p>
<p>
minim veniam
</p>
<p>
quis nostrud exercitation ullamco laboris nisi ut - aaaaaaa
</p>
<img src="cid:logo" alt="this is logo image">
</div>
------=_Part_1_706751112.1690376383646--
------=_Part_0_2107679308.1690376383642
Content-Type: image/png; name=something.png
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename=something.png
iVBORw0KGgoAAAANSUhEUgAABCkAAAFkCAYAAAANCGFyAAAAAXNSR0IArs4c6QAAAARnQU1BAACx ...
------=_Part_0_2107679308.1690376383642--
我没有粘贴整个 base64 图像
答: 暂无答案
评论