背景
大多数互联网企业都会将邮件发送抽取为一个独立的微服务,对外提供接口来支持各种类型的邮件发送。
今天我们作为练习只是放在一个module里
邮件协议
发送邮件的本质是将一个人的信息传输给另外一个人,那么如何传输就需要商量好标准,这些标准就是协议。最初只有两个协议:
SMTP(Simple Mail Transfer Protocol)
它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。它的一个重要特点是它能够在传送中接力传送邮件,即邮件可以通过不同网络上的主机接力式传送。
POP3(Post Office Protocol version 3)
即邮局协议的第3个版本,它规定怎样将个人计算机连接到 Internet 的邮件服务器和下载电子邮件的电子协议。
随着邮件的不断发展后来又增加了两个协议:
IMAP(Internet Message Access Protocol)
开启了 IMAP 后,在电子邮件客户端收取的邮件仍然保留在服务器上,同时在客户端上的操作都会反馈到服务器上,如:删除邮件,标记已读等,服务器上的邮件也会做相应的动作。
所以无论从浏览器登录邮箱或者客户端软件登录邮箱,看到的邮件以及状态都是一致的。
MIME(Multipurpose Internet Mail Extensions)
由于 SMTP 这个协议开始是基于纯 ASCⅡ文本的,在二进制文件上处理得并不好。后来开发了用来编码二进制文件的标准,如 MIME,以使其通过 SMTP 来传输。
今天,大多数 SMTP 服务器都支持 8 位 MIME 扩展,它使二进制文件的传输变得几乎和纯文本一样简单。
简单的demo
最早期的时候使用 JavaMail 相关 API 来开发,需要自己去封装消息体,代码量比较庞大;
后来 Spring 推出了 JavaMailSender 简化了邮件发送过程,JavaMailSender 提供了强大的邮件发送功能,可支持各种类型的邮件发送。
现在 Spring Boot 在 JavaMailSender 的基础上又进行了封装,就有了现在的 spring-boot-starter-mail,让邮件发送流程更加简洁和完善。
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>