Java笔记:SpringBoot发送邮件
发布日期:2021-07-01 06:13:59
浏览次数:2
分类:技术文章
本文共 7710 字,大约阅读时间需要 25 分钟。
SpringBoot发送邮件
课程目录
1、第一部分 背景
- 使用场景
- 发送原理
- 发送历史
- SpringBoot介绍
- 前置知识
2、第二部分 实践
- 文本邮件
- HTML邮件
- 附件邮件
- 图片邮件
- 邮件模板
- 邮件系统
第一部分 背景
1、邮件使用场景
- 注册验证
- 网站营销
- 安全防线
- 提醒监控
- 触发机制
2、邮件发送原理
- SMPTP协议 发送协议
- POP3协议 接收协议
- IMAP协议 对POP3补充
- Mime协议
3、邮件发送历史
- 1969年10月世界第一封
- 1987年9月14日中国第一封
4、SpringBoot介绍
- 约定大于配置
- 简单快速开发
- 强大生态链
5、前置知识
- Spring
- Maven
- HTML
- Thymeleaf
第二部分 实践
1、学习路径
- 基础配置
- 文本邮件
- HTML邮件
- 附件邮件
- 图片邮件
- 邮件模板
- 异常处理
- 邮件系统
2、环境配置
初始化SpringBoot项目
https://start.spring.io/版本:2.3.5.RELEASE
Service示例
package com.example.demo.service;import org.springframework.stereotype.Service;@Servicepublic class HelloService { public void sayHello(){ System.out.println("Hello"); }}
测试类
package com.example.demo;import com.example.demo.service.HelloService;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;@SpringBootTestclass DemoApplicationTests { @Autowired HelloService helloService; @Test void sayHelloTest() { helloService.sayHello(); }}
3、项目配置
- 引入jar包
org.springframework.boot spring-boot-starter-mail org.springframework.boot spring-boot-starter-thymeleaf
- 配置邮箱参数
spring.mail.host=smtp.163.comspring.mail.username=username@163.com# 户端授权码spring.mail.password=passwordspring.mail.default-encoding=UTF-8
4、发送邮件
- 封装SimpleMailMessage
- JavaMailSender进行发送
package com.example.demo.service;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.beans.factory.annotation.Value;import org.springframework.core.io.FileSystemResource;import org.springframework.mail.SimpleMailMessage;import org.springframework.mail.javamail.JavaMailSender;import org.springframework.mail.javamail.MimeMessageHelper;import org.springframework.stereotype.Service;import javax.mail.MessagingException;import javax.mail.internet.MimeMessage;import java.io.File;@Servicepublic class MailService { private final Logger logger = LoggerFactory.getLogger(this.getClass()); @Value("${spring.mail.username}") private String fromUser; @Autowired private JavaMailSender mailSender; /** * 文本邮件 * * @param toUser * @param subject * @param content */ public void sendSimpleMail( String toUser, String subject, String content) { SimpleMailMessage message = new SimpleMailMessage(); message.setFrom(fromUser); message.setTo(toUser); message.setSubject(subject); message.setText(content); mailSender.send(message); } /** * html邮件 * * @param toUser * @param subject * @param content */ public void sendHtmlMail( String toUser, String subject, String content) { logger.info("html邮件开始:{} {} {}", toUser, subject, content); MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = null; try { helper = new MimeMessageHelper(message, true); helper.setFrom(fromUser); helper.setTo(toUser); helper.setSubject(subject); helper.setText(content, true); mailSender.send(message); logger.info("html邮件成功"); } catch (MessagingException e) { e.printStackTrace(); logger.error("html邮件失败:", e); } } /** * 附件邮件 * * @param toUser * @param subject * @param content * @param filePath 绝对路径 * @throws MessagingException */ public void sendAttachmentsMail( String toUser, String subject, String content, String filePath) throws MessagingException { MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(fromUser); helper.setTo(toUser); helper.setSubject(subject); helper.setText(content, true); FileSystemResource file = new FileSystemResource(new File(filePath)); // 可以多次添加附件 helper.addAttachment(file.getFilename(), file); mailSender.send(message); } /** * 图片邮件 * * @param toUser * @param subject * @param content * @param resourcePath * @param resourceId * @throws MessagingException */ public void sendInlineResourceMail( String toUser, String subject, String content, String resourcePath, String resourceId) throws MessagingException { MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper = new MimeMessageHelper(message, true); helper.setFrom(fromUser); helper.setTo(toUser); helper.setSubject(subject); helper.setText(content, true); FileSystemResource resource = new FileSystemResource(new File(resourcePath)); // 可以多次添加图片 helper.addInline(resourceId, resource); mailSender.send(message); }}
- 发送测试
package com.example.demo;import com.example.demo.service.MailService;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.core.io.ClassPathResource;import org.thymeleaf.TemplateEngine;import org.thymeleaf.context.Context;import javax.mail.MessagingException;import java.io.IOException;@SpringBootTestclass DemoApplicationTests { @Autowired MailService mailService; @Autowired TemplateEngine templateEngine; @Test void sendSimpleMailTest() { mailService.sendSimpleMail( "pengshiyuyx@163.com", "文本邮件标题", "邮件内容" ); } @Test void sendHtmlMailTest() { String content = "" + "" + "这是邮件内容
" + "" + ""; mailService.sendHtmlMail( "pengshiyuyx@163.com", "HTML邮件标题", content ); } @Test void sendAttachmentsMailTest() throws MessagingException, IOException { String filePath = "name.txt"; ClassPathResource resource = new ClassPathResource(filePath); mailService.sendAttachmentsMail( "pengshiyuyx@163.com", "附件邮件标题", "邮件内容", resource.getFile().getAbsolutePath() ); } @Test void sendInlineResourceMailTest() throws IOException, MessagingException { String imagePath = "demo.jpg"; String resourceId = "image001"; String content = "" + "" + "这是邮件内容
" + "" + "" + ""; ClassPathResource resource = new ClassPathResource(imagePath); mailService.sendInlineResourceMail( "pengshiyuyx@163.com", "图片邮件标题", content, resource.getFile().getAbsolutePath(), resourceId ); } @Test void sendTemplateMailTest() { Context content = new Context(); content.setVariable("id", "007"); String mailContent = templateEngine.process("mail", content); mailService.sendHtmlMail( "pengshiyuyx@163.com", "模板邮件标题", mailContent ); }}
模板
Title 感谢注册
常见错误
- 421 HL:ICC 该IP同事并发连接数过大
- 451 Requested mail action not taken: too much fail 登录失败次数过多,被临时禁止登录
- 553 authentication is required 认证失败
更多错误
http://help.163.com/09/1224/17/5RAJ4LMH00753VB8.html邮件系统
- 独立微服务MQ
- 异常处理
- 定时重试邮件
- 异步发送
总结
- 邮件发送历史和原理
- SpringBoot 和邮件系统
- 各种类型邮件的发送
- 邮件系统
转载地址:https://pengshiyu.blog.csdn.net/article/details/109569290 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
表示我来过!
[***.240.166.169]2024年04月29日 13时06分20秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Android Studio 初探
2019-05-08
Redis for Windows
2019-05-08
windows平台安装php_memcache模块
2019-05-08
CSS3 Drop-Shadows效果制作教程分享
2019-05-08
arm裸机通过uboot运行hello world程序测试结果
2019-05-08
alias命令使用
2019-05-08
经常犯的错
2019-05-08
java的互斥_转帖
2019-05-08
原 java 获取xml中的元素(多重)
2019-05-08
无意义
2019-05-08
sip协议
2019-05-08
快捷键
2019-05-08
typedef 的本质
2019-05-08
读取配置文件
2019-05-08
UML
2019-05-08
linux 信号 转帖
2019-05-08
zai~~myGODDDD
2019-05-08
someThing about thread
2019-05-08