0

我有一个使用 Freemarker 模板发送电子邮件的 JSF 2.x 应用程序。

我的问题最好描述如下:

  • 在我的 Freemarker 模板中,我指的是托管在 JSF 网站上的媒体/图像;
  • 我的资源位于“ jsf2.xresources文件夹中;
  • 当然,我不能使用<h:graphicImage library="images" name="logo.gif" ...Freemarker 模板中的语法...

有没有人有任何解决方案?

我应该将图像附加到电子邮件中吗?

或者我应该为我的图像/媒体使用两个位置(一个公共位置,另一个在resources文件夹下)?

4

1 回答 1

1

似乎这里有一些不相关的问题。

一个问题是附加图像 VS 通过电子邮件中的 URL 引用它们。我不认为这是决定的,这取决于很多事情。我说,如果图像不仅仅是装饰,而是收件人想要保留在他的邮件存档中的东西(如图表),嵌入是唯一的方法,除非你能保证图像 URL 在数月或数年后仍然有效. 如果它只是装饰......那很棘手。上次我检查时,邮件客户端默认阻止从 URL 加载图像。用户必须点击它们或其他东西才能加载它们,但也许他们可以永久启用来自发件人的图像。但如果图像不重要,大多数用户就不会关心,也永远不会看到它们。附加图片在这方面更防弹,但它增加了邮件的大小(不太礼貌),

另一个问题是与 JSF/FreeMarker 相关的问题。我不知道 JSF ......但除非它是一个可怕的设计,否则它必须有 Java API-s 通过它你可以获取资源 URL(如果你想在邮件中引用它),或者阅读资源(如果您想将其附加到邮件中)。然后从 FreeMarker 模板中,您可以调用已放入数据模型的对象的 Java 方法,因此您可以添加一些帮助对象,FreeMarker 可以从中获取 URL 或 base64 编码的内容。(如果您不能/不想添加到数据模型中,您仍然可以创建TemplateDirectiveModelTemplateMethodModelEx实现并将它们拉入,如<#assign resourceContentB64 = 'com.example.ResourceContentB64Directive'?new()>.)

于 2012-08-20T08:48:54.623 回答