从 Spring MVC 应用程序发送包含图像的 Velocity 模板化电子邮件

发布于 2024-10-20 21:17:40 字数 216 浏览 5 评论 0原文

我感兴趣的是,从使用 Velocity 的 Spring MVC 应用程序发送包含图像的电子邮件的最佳方式是什么。

图像应位于应用程序中,可能与 *.vm 模板位于同一位置(例如 src/main/resources/templates),并且不应使用绝对路径(例如 C:\App...),这就是为什么我不知道如何做到这一点。

建议?

I'm interested which is the best way to send Emails with images in them from a Spring MVC application which uses Velocity.

The image should be in the application, possibly in the same location as the *.vm template (e.g. src/main/resources/templates) and no absolute paths should be used (e.g. C:\App...), that's why I can't figure it out how to do it.

Suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

如此安好 2024-10-27 21:17:40

您需要了解图像和电子邮件如何协同工作。我不是这方面的专家,但我认为选项是

  • 将图像作为附件包含在电子邮件中(蹩脚的,恕我直言;并且您的带宽使用率会非常高)
  • 发送 HTML 电子邮件并链接到托管在 Internet 上的图像

看看 org.springframework.mail.javamail.MimeMessageHelper

You need to understand how images and emails work together. I'm not an expert here, but I think the options are

  • include the image as an attachment in the email (lame, IMHO; and your bandwidth usage will be very high)
  • send an HTML email and link to an image hosted on the Internet

Have a look at org.springframework.mail.javamail.MimeMessageHelper

对岸观火 2024-10-27 21:17:40

使用 Spring,您可以轻松地从文件系统或类路径(甚至在 jar 文件内)加载资源,而无需绝对路径。您应该使用Resource及其实现,基本上是FileSystemResourceClasspathResource
这是一个示例:

Resource fileResource = new FileSystemResource("resources/templates");

加载后,您可以直接从资源实例中检索输入流。

另外,您可以将相对路径注入到具有 Resource 类型的实例属性的 bean:

<bean id="mailer" class="test.Mailer">
    <property name="templateResource" value="file:resource/templates" />
</bean>

我不使用 Velocity,但我通常以这种方式加载模板以使用 freemarker 生成动态内容。加载图像后,您还可以将图像附加到电子邮件中。

With Spring you can easily load resources from file system or from classpath (even within jar file) without absolute paths. You should use a Resource and its implementations, basically FileSystemResource or ClasspathResource.
This is an example:

Resource fileResource = new FileSystemResource("resources/templates");

After loading you can directly retrieve inputstream from resource instance.

Also, you can inject your relative path to a bean which has an instance attribute of type Resource:

<bean id="mailer" class="test.Mailer">
    <property name="templateResource" value="file:resource/templates" />
</bean>

I don't use Velocity but I usually load templates in this way to generate dynamic content with freemarker. You can also attach an image to an email, once you've loaded it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文