第一部分(背景)
1.1 邮件的使用场景
- 注册验证
- 网站营销
- 密码找回
- 提醒、监控告警
- 触发机制
1.2 邮件的发送原理
邮件传输协议:
-
SMTP协议(规定如何把邮件从一台服务器传输到另一台服务器)
-
Mime协议(增强了二进制文件传输功能)
-
POP3协议(规定了如何把邮件从邮件服务器中的下载到客户端)
-
IMAP协议(对POP协议的补充。即:客户端对邮件的操作,会反馈给邮件服务器)
发送邮件的流程图:
1.3 邮件的发送历史
1969年10月,世界第一份电子邮件。
1987年9月14日,中国第一封电子邮件。
1.4 SpringBoot介绍
-
约定大于配置
-
简单快速开发
-
强大的生态链家族
第二部分(实践)
2.1 发送文本邮件
- 引入jar依赖包
复制代码 org.springframework.boot spring-boot-starter-mail
- 配置邮箱参数
spring.mail.host=smtp.163.comspring.mail.port=25spring.mail.username=***@163.comspring.mail.password=***spring.mail.default-encoding=UTF-8复制代码
- 封装SimpleMailMessage
- JavaMailSender
@Servicepublic 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); }复制代码