gpt4 book ai didi

java - Freemarker 在 ftl 上嵌入图像

转载 作者:行者123 更新时间:2023-12-02 12:30:05 34 4
gpt4 key购买 nike

我正在尝试在 Freemarker ftl 模板上嵌入图像以作为电子邮件发送,我基于这个问题 Feemarker writing images to html ,我做了与这个问题所说完全相同的事情,但是电子邮件正在生成,如 this

什么可能导致此错误,以及如何修复它?

我的模板看起来像这样

<img alt="My image" src="${imgAsBase64}" />

图像是一个图表,我通过生成图表图像的 Base64 的 Primefaces JavaScript 函数获得 Base64 字符串,我将其称为 imageBase64Str,我将其传递给 bean 并将参数传递给模板,如下所示这个

String encoded = imageBase64Str.split(",")[1];
byte[] decoded = Base64.decodeBase64(encoded);
String imgDataAsBase64 = new String(decoded);
String imgAsBase64 = "data:image/png;base64," + imgDataAsBase64;
emailParams.put("imgAsBase64", imgAsBase64);

最佳答案

String returned = imageBase64Str.split(",")[1]; 可疑。看起来您正在更改以某种不同方式生成的 Base 64 字符串。该图像实际上是 png 还是其他格式?我认为,如果您删除该拆分并仅执行 emailParams.put("imgAsBase64", imageBase64Str); 它可能会起作用。

但是您需要考虑到此解决方案不适用于许多电子邮件客户端。根据此链接https://www.campaignmonitor.com/blog/email-marketing/2013/02/embedded-images-in-html-email/一些主要的电子邮件客户端(网络版和独立版)不支持 Base64 嵌入图像,包括 Gmail 和 Outlook。鉴于它们是最常见的电子邮件客户端,您不想提供不适用于它们的解决方案,否则您的大多数用户会不满意。

在我看来,最好的选择是将图像托管在服务器中,并在 freemarker 模板中使用完全限定的 URL。

另一种方法是使用附件并在 html 源中引用它们,如下所述:https://stackoverflow.com/a/36870709/2546299但它需要更改电子邮件的发送方式(需要添加附件),因此它可能不适合您的情况。

关于java - Freemarker 在 ftl 上嵌入图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45316104/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com