似乎这里有一些不相关的问题。
一个问题是附加图像 VS 通过电子邮件中的 URL 引用它们。我不认为这是决定的,这取决于很多事情。我说,如果图像不仅仅是装饰,而是收件人想要保留在他的邮件存档中的东西(如图表),嵌入是唯一的方法,除非你能保证图像 URL 在数月或数年后仍然有效. 如果它只是装饰......那很棘手。上次我检查时,邮件客户端默认阻止从 URL 加载图像。用户必须点击它们或其他东西才能加载它们,但也许他们可以永久启用来自发件人的图像。但如果图像不重要,大多数用户就不会关心,也永远不会看到它们。附加图片在这方面更防弹,但它增加了邮件的大小(不太礼貌),
另一个问题是与 JSF/FreeMarker 相关的问题。我不知道 JSF ......但除非它是一个可怕的设计,否则它必须有 Java API-s 通过它你可以获取资源 URL(如果你想在邮件中引用它),或者阅读资源(如果您想将其附加到邮件中)。然后从 FreeMarker 模板中,您可以调用已放入数据模型的对象的 Java 方法,因此您可以添加一些帮助对象,FreeMarker 可以从中获取 URL 或 base64 编码的内容。(如果您不能/不想添加到数据模型中,您仍然可以创建TemplateDirectiveModel
或TemplateMethodModelEx
实现并将它们拉入,如<#assign resourceContentB64 = 'com.example.ResourceContentB64Directive'?new()>
.)