从 Spring MVC 应用程序发送包含图像的 Velocity 模板化电子邮件
我感兴趣的是,从使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要了解图像和电子邮件如何协同工作。我不是这方面的专家,但我认为选项是
看看 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
Have a look at org.springframework.mail.javamail.MimeMessageHelper
使用 Spring,您可以轻松地从文件系统或类路径(甚至在 jar 文件内)加载资源,而无需绝对路径。您应该使用
Resource
及其实现,基本上是FileSystemResource
或ClasspathResource
。这是一个示例:
加载后,您可以直接从资源实例中检索输入流。
另外,您可以将相对路径注入到具有 Resource 类型的实例属性的 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, basicallyFileSystemResource
orClasspathResource
.This is an example:
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:
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.