第一部分(背景)
1.1 邮件的使用场景
- 注册验证
- 网站营销
- 密码找回
- 提醒、监控告警
- 触发机制
1.2 邮件的发送原理
邮件传输协议:
-
SMTP协议(规定如何把邮件从一台服务器传输到另一台服务器)
-
Mime协议(增强了二进制文件传输功能)
-
POP3协议(规定了如何把邮件从邮件服务器中的下载到客户端)
-
IMAP协议(对POP协议的补充。即:客户端对邮件的操作,会反馈给邮件服务器)
发送邮件的流程图:

1.3 邮件的发送历史
1969年10月,世界第一份电子邮件。
1987年9月14日,中国第一封电子邮件。
1.4 SpringBoot介绍
-
约定大于配置
-
简单快速开发
-
强大的生态链家族
第二部分(实践)
2.1 发送文本邮件
- 引入jar依赖包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
- 配置邮箱参数
spring.mail.host=smtp.163.com
spring.mail.port=25
spring.mail.username=***@163.com
spring.mail.password=***
spring.mail.default-encoding=UTF-8
- 封装SimpleMailMessage
- JavaMailSender
@Service
public class MailService {
@Value("${spring.mail.username}")
private String from;
@Autowired
private MailSender mailSender;
/**
* 发送方法
* @param toUser
* @param subject
* @param content
*/
public void sendSimpleMail(String toUser, String subject, String content){
SimpleMailMessage message = new SimpleMailMessage();
// 接收人
message.setTo(toUser);
// 发送主题
message.setSubject(subject);
// 发送内容
message.setText(content);
// 发送人
message.setFrom(from);
mailSender.send(message);
}
}
2.2 发送HTML邮件
/**
* 发送html邮件
* @param toUser
* @param subject
* @param content
*/
public void sendHTMLEmail(String toUser, String subject, String content) throws MessagingException {
// 创建发送消息
MimeMessage message = mailSender.createMimeMessage();
// 创建发送消息Helper
MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);
messageHelper.setTo(toUser);
messageHelper.setSubject(subject);
messageHelper.setText(content, true);
messageHelper.setFrom(from);
// 发送
mailSender.send(message);
}
2.3 发送附件邮件
/**
* 发送带附件的邮件
* @param toUser
* @param subject
* @param content
* @param filePath
*/
public void sendAttachmentEmail(String toUser, String subject, String content, String filePath) throws MessagingException {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);
messageHelper.setFrom(from);
messageHelper.setTo(toUser);
messageHelper.setSubject(subject);
messageHelper.setText(content);
// 获取附件文件
FileSystemResource file = new FileSystemResource(filePath);
// 获取文件名称
String fileName = file.getFilename();
// 添加文件
messageHelper.addAttachment(fileName, file);
mailSender.send(message);
}
2.4 发送带图片邮件
/**
* 发送邮件中包含图片
* @param toUser
* @param subject
* @param content
* @param rscPath
* @param rscId
* @throws MessagingException
*/
public void sendInlineResourceEmail(String toUser, String subject, String content, String rscPath, String rscId) throws MessagingException {
MimeMessage message = mailSender.createMimeMessage();
MimeMessageHelper messageHelper = new MimeMessageHelper(message, true);
messageHelper.setFrom(from);
messageHelper.setTo(toUser);
messageHelper.setSubject(subject);
messageHelper.setText(content, true);
// 获取图片
FileSystemResource res = new FileSystemResource(rscPath);
// 添加图片和图片ID
messageHelper.addInline(rscId, res);
mailSender.send(message);
}
2.5 邮件系统

2.6 常见错误码
