zl程序教程

您现在的位置是:首页 >  后端

当前栏目

《Spring 5官方文档》电子邮件

Spring文档官方 电子邮件
2023-09-11 14:16:08 时间
29.1 介绍

依赖库:使用Spring框架的邮件功能需要将JavaMail的Jar包添加到依赖中。这个库可以Maven中心找到:com.sun.mail:javax.mail

Spring提供了一个实用的发送电子邮件库,它为使用者屏蔽了邮件系统的底层细节和客户端的底层资源处理。

Spring邮件相关功能在org.springframework.mail包下,其中MailSender是发送邮件的核心接口;SimpleMailMessage类是对邮件属性(发件人、收件人以等)进行简单的封装。这个包中也包含一系列的检查异常,它们是对邮件系统低级别的异常进行抽象,且均继承自MailException。有关异常的更多信息,请参阅相关javadoc。

org.springframework.mail.javamail.JavaMailSender接口继承自MailSender接口,并增加了一些特有的JavaMail功能,如MIME邮件的支持。JavaMailSender还提供了一个用于编写MIME消息的回调org.springframework.mail.javamail.MimeMessagePreparator接口。

 

29.2 使用

我们假设有一个OrderManager业务接口:


        // Create a thread safe amp;amp;quot;copy amp;amp;quot; of the template message and customize it
                + amp;amp;quot;, thank you for placing order. Your order number is amp;amp;quot;
amp;lt;!-- this is a template message that we can pre-load with default state -- amp;gt;

下面的例子是OrderManager接口的另一种实现,其中使用了MimeMessagePreparator类。 在这里,mailSender是JavaMailSender类型,因此我们可以使用JavaMail MimeMessage类:


                mimeMessage.setFrom(newInternetAddress( amp;amp;quot;mail@mycompany.com amp;amp;quot;));
                         amp;amp;quot;Dear amp;amp;quot; + order.getCustomer().getFirstName() + amp;amp;quot; amp;amp;quot;
                            + amp;amp;quot;, thank you for placing order. Your order number is amp;amp;quot;

上面中邮件代码只是作为示例,最好方式是将邮件发送代码重构到其它Bean中,并在OrderManager合适的地方调用它。

Spring框架邮件也支持标准的JavaMail实现。 了解更多信息,请参阅相关的javadocs。

29.2 使用MimeMessageHelper

org.springframework.mail.javamail.MimeMessageHelper是一个处理JavaMail消息的好工具,它屏蔽了很多JavaMail API的细节,所以使用MimeMessageHelper可以很简便的创建一个MimeMessage。


29.3.1 附件和嵌入资源

邮件允许添加附件和内联资源。嵌入资源是你嵌入到邮件中的图片或样式,但又不希望显示为附件。

附件

下面的例子将展示如何使用MimeMessageHelper发送一个带JPEG图片附件的邮件:


FileSystemResource file = new FileSystemResource(newFile( amp;amp;quot;c:/Sample.jpg amp;amp;quot;));

嵌入资源

下面的例子将展示如何使用MimeMessageHelper发送一个嵌入图片的邮件:


helper.setText( amp;amp;quot; amp;amp;lt;html amp;amp;gt; amp;amp;lt;body amp;amp;gt; amp;amp;lt;img src=cid:identifier1234 amp;amp;gt; amp;amp;lt;/body amp;amp;gt; amp;amp;lt;/html amp;amp;gt; amp;amp;quot;, true);
FileSystemResource res = new FileSystemResource(newFile( amp;amp;quot;c:/Sample.jpg amp;amp;quot;));

嵌入资源需要使用Content-ID(上面的例子identifier1234)添加到MIME消息中。文本和嵌入资源添加是有顺序的,需要按照先添加文本,再添加嵌入资源的顺序。否则,它将不会工作!

29.3.2 使用模板库创建电子邮件内容

在前面的例子中,我们通常使用message.setText(..)等方法创建邮件内容。在简单的情况下,像前面例子那样使用API就可以满足我们的需要了。

在典型的企业应用程序中,下面的原因让你不定会使用上面的方法创建你的邮件内容。

在Java代码中创建HTML的电子邮件内容冗长,且容易出错 呈现逻辑和业务逻辑混杂 更改电子邮件内容的展示结构需要编写Java代码,重新编译,重新部署…

通常解决方法是使用模板框架定义电子邮件的呈现逻辑,如FreeMarker。分离呈现逻辑和业务逻辑使得你的代码更清晰。当你的邮件的内容变的复杂时,这绝对是一个最佳实践,而且Spring框架对FreeMarker有很好的支持。

转载自 并发编程网 - ifeve.com


《Spring Data官方文档》翻译邀请 转眼间已经11月了,天气也逐渐变得冷了起来,本月并发网组织大家翻译《Spring Data官方指南》,文章比较简单,欢迎使用过或想了解Sring Data的同学参与翻译。
通过评论领取想要翻译的文章,每次领取一章或一节(根据内容长短),翻译完后再领取其他章节。
你需要连接到Cassandra来创建配置文件信息。接触点是键空间的所必需的最小字段,但是为了清楚起见,最好能添加端口。
《Spring Data 官方文档》5.8. 使用自定义转换器重载默认映射至5.10. 异常解释 5.8. 使用自定义转换器重载默认映射 为了对映射过程有更细粒度的控制,你可以使用’CassandraConverter’实现来注册Spring转换器,例如’MappingCassandraConverter’。
本章将指出Cassandra所提供的存储库的特色。它基于Spring Data Repositories中所提供的核心存储库, 需要您对这里所说的基本概念有一定的了解。
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载