Spring Boot 邮件发送
2024-08-23 20:16:15
pom文件依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
pom.xml
配置文件
spring:
mail:
host: smtp.qq.com #协议 这边使用的QQ
username: xxxxxxx@qq.com #用户名
password: xxxxxx #邮箱授权码
default-encoding: UTF-8 #编码格式
application.properties || application.yml
创建Mail服务类
public interface MailService {
/**
* 发送普通文本邮件
* @param to 收件人
* @param subject 主题
* @param content 内容
*/
void sendSimpleMail(String to, String subject, String content);
/**
* 发送HTML邮件
* @param to 收件人
* @param subject 主题
* @param content 内容(可以包含<html>等标签)
*/
void sendHtmlMail(String to, String subject, String content);
/**
* 发送带附件的邮件
* @param to 收件人
* @param subject 主题
* @param content 内容
* @param filePath 附件路径
*/
void sendAttachmentMail(String to, String subject, String content, String filePath);
/**
* 发送带图片的邮件
* @param to 收件人
* @param subject 主题
* @param content 文本
* @param rscPath 图片路径
* @param rscId 图片ID,用于在<img>标签中使用,从而显示图片
*/
void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId); }
MailService.java
@Service
public class MailServiceImpl implements MailService { private final Logger logger = LoggerFactory.getLogger(MailServiceImpl.class); @Value("${spring.mail.username}")
private String from; @Autowired
private JavaMailSender mailSender; @Override
public void sendSimpleMail(String to, String subject, String content) { SimpleMailMessage message = new SimpleMailMessage();
message.setTo(to);//收信人
message.setSubject(subject);//主题
message.setText(content);//内容
message.setFrom(from);//发信人 mailSender.send(message);
}
@Override
public void sendHtmlMail(String to, String subject, String content) { logger.info("发送HTML邮件开始:{},{},{}", to, subject, content);
MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper;
try {
helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);//true代表支持html
mailSender.send(message);
logger.info("发送HTML邮件成功");
} catch (MessagingException e) {
logger.error("发送HTML邮件失败:", e);
}
}
@Override
public void sendAttachmentMail(String to, String subject, String content, String filePath) { logger.info("发送带附件邮件开始:{},{},{},{}", to, subject, content, filePath);
MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper;
try {
helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
FileSystemResource file = new FileSystemResource(new File(filePath));
String fileName = file.getFilename();
helper.addAttachment(fileName, file);//添加附件,可多次调用该方法添加多个附件
mailSender.send(message);
logger.info("发送带附件邮件成功");
} catch (MessagingException e) {
logger.error("发送带附件邮件失败", e);
} }
@Override
public void sendInlineResourceMail(String to, String subject, String content, String rscPath, String rscId) { logger.info("发送带图片邮件开始:{},{},{},{},{}", to, subject, content, rscPath, rscId);
MimeMessage message = mailSender.createMimeMessage(); MimeMessageHelper helper;
try {
helper = new MimeMessageHelper(message, true);
helper.setFrom(from);
helper.setTo(to);
helper.setSubject(subject);
helper.setText(content, true);
FileSystemResource res = new FileSystemResource(new File(rscPath));
helper.addInline(rscId, res);//重复使用添加多个图片
mailSender.send(message);
logger.info("发送带图片邮件成功");
} catch (MessagingException e) {
logger.error("发送带图片邮件失败", e);
}
} }
MailServiceImpl.java
最后Test一波
@RunWith(SpringRunner.class)
@SpringBootTest(classes = MainApplication.class)
public class MailTest {
@Autowired
MailService mailService; @Test
public void sendSimpleMail(){
mailService.sendSimpleMail("xxxxx@qq.com","标题","内容");
} }
MailTest
最新文章
- JavaScript 动态插入 CSS
- [.net 面向对象编程基础] (7) 基础中的基础——流程控制语句
- what is php?
- angular 依赖注入
- linux下的文件系统
- docker的例子
- 删除指定的文件.bat
- java多线程总结四:volatile、synchronized示例
- [UOJ Round#4 A] [#51] 元旦三侠的游戏 【容斥 + 递推】
- CastleWindsor 使用说明
- nginx笔记2-负载均衡
- ListView 无 DataSource 依然用 DataPager 翻页
- 如何优化 ThreadPoolExecutor
- JAVA RSA非对称加密详解[转载]
- python 中的exec
- ReactiveX 学习笔记(24)使用 RxCpp + C++ REST SDK 调用 REST API
- N!
- thymeleaf 格式化时间
- opencv中的更通用的形态学
- 【Spring学习笔记-MVC-13】Spring MVC之文件上传
热门文章
- 自己动手用java写一个hashMap
- nx-admin1.2版本发布
- React解决长列表方案(react-virtualized)
- Linux apache开启虚拟主机伪静态.htaccess
- jenkins操作
- rabitmq + php
- 吃透这份pdf,面试阿里、腾讯、百度等一线大厂,顺利拿下心仪offer!
- Linux启动nginx时报错nginx: [emerg] getpwnam(";nginx";) failed
- js 运动的应用 新浪微博
- Flask 偏函数、g对象、flask-session、数据库连接池、信号、自制命令、flask-admin