描述:
Spring框架提供了一个有用的实用程序库,用于发送电子邮件,使您不受底层邮件系统的限制,并负责代表客户端进行低级资源处理。
该org.springframework.mail
软件包是Spring框架的电子邮件支持的根级软件包。用于发送电子邮件的中央接口是该MailSender
接口。封装了简单邮件的属性(例如和from
和to
(以及许多其他))的简单值对象是SimpleMailMessage
类。该程序包还包含一个已检查异常的层次结构,该层次结构提供了比较低级别的邮件系统异常更高的抽象级别,根异常为 MailException
。有关 富邮件异常层次结构的更多信息,请参见javadoc。
整合mail邮件服务:
1.pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2.yml 配置:
spring:
mail:
username: miraitowa1796@163.com
password: xxxx
host: smtp.163.com
这里我使用的是 163的邮件服务,大家自行去注册一个账号,然后设置哪里,去开启smtp服务。并且密码是smtp的授权码,不是邮件密码。
3.测试发送邮件服务:
JavaMailSenderImpl 是用于发送邮件的服务器,只需要引入这个类,就可以调用方法去实现发送邮件了。
@Autowired
JavaMailSenderImpl javaMailSender;
/**
* 测试邮箱发送:
*/
@Test
void contextLoads() {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setSubject("测试邮件服务"); //主题
simpleMailMessage.setText("这是一封用来测试邮件的服务");//内容
simpleMailMessage.setTo("1796789910@qq.com");//发送给那个邮箱,可选多个
simpleMailMessage.setFrom("miraitowa1796@163.com");//是谁发送的。
javaMailSender.send(simpleMailMessage);
}
简单的邮件发送服务就实现了,接下来我们来发送html和附件服务。
/**
* 发送带附件或者html的邮件
*/
@Test
void contextFileLoads() throws MessagingException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);
helper.setSubject("通知今晚开会");
helper.setText("<p>这是一个带附件的html文件</p>",true);//true 表示这是一个 html邮件
helper.setTo("1796789910@qq.com");
//要上传的文件:
FileSystemResource file = new FileSystemResource(new File("c:/Sample.jpg"));//附件地址
helper.addAttachment("test.jpg", file);
javaMailSender.send(mimeMessage);
}
使用模板库创建电子邮件内容
上一节中显示的示例中的代码通过使用诸如之类的方法调用显式创建了电子邮件的内容message.setText(..)
。这对于简单的情况很好,并且在上述示例的上下文中也可以,其目的是向您展示API的基本知识。
但是,在典型的企业应用程序中,由于多种原因,开发人员通常不使用先前显示的方法来创建电子邮件的内容:
- 用Java代码创建基于HTML的电子邮件内容很繁琐且容易出错。
- 显示逻辑和业务逻辑之间没有明确的区分。
- 更改电子邮件内容的显示结构需要编写Java代码,重新编译,重新部署等。
通常,解决这些问题的方法是使用模板库(例如FreeMarker)来定义电子邮件内容的显示结构。这使您的代码只能执行创建要在电子邮件模板中呈现的数据并发送电子邮件的任务。当您的电子邮件的内容变得相当复杂时,这绝对是最佳实践,而且,借助Spring Framework对FreeMarker的支持类,它变得非常容易实现。
其他好玩的,请自行读文档,调试开发,实例代码在github上面需要的请自行拉取:spring-boot-integrate
然后后续会集成更多的模块进去,需要请点个star。有问题下方讨论一起学习