一、获取QQ邮箱授权码
具体实现看上一篇文章
二、添加依赖
<!-- spring-boot-starter-mail 邮件依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
三、编写配置
# Spring配置
spring:
#邮箱基本配置
mail:
#配置smtp服务主机地址
# qq邮箱为smtp.qq.com 端口号465或587
# sina smtp.sina.cn
# aliyun smtp.aliyun.com
# 163 smtp.163.com 端口号465或994
host: smtp.qq.com
#发送者邮箱
username: 你的邮箱地址
#配置密码,注意不是真正的密码,而是刚刚申请到的授权码
password: 上述邮箱的授权码
#端口号465或587
port: 587
#默认的邮件编码为UTF-8
default-encoding: UTF-8
#其他参数
properties:
mail:
smtp:
auth: true
starttls:
enable: true # 启用TLS
四、编码
/**
* 注入邮件工具类
*/
@Autowired
private JavaMailSenderImpl javaMailSender;
@Autowired
private IAlarmContactInfoService alarmContactInfoService;
@Value("${spring.mail.username}")
private String sendMailer;
/**
* 发送html文本和附件邮件
*
* @param subject 主题
* @param text 发短信
* @param filePath 文件路径
*/
public void sendAttachmentMailMessage(String subject, String text, String filePath) {
try {
// true 代表支持复杂的类型
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMessage, true);
// 邮件发信人
mimeMessageHelper.setFrom(sendMailer);
// 将邮箱地址列表转换为用逗号分隔的字符串
List<String> strings = alarmContactInfoService.selectEnabledContactEmail();
String receivers = String.join(",", strings);
// 邮件收信人 1或多个
mimeMessageHelper.setTo(receivers.split(","));
// 邮件主题
mimeMessageHelper.setSubject(subject);
// 邮件内容(第二个参数设置为 true 表示支持 HTML)
mimeMessageHelper.setText(text, true);
// 邮件发送时间
mimeMessageHelper.setSentDate(new Date());
// 添加附件
File attachment = new File(filePath);
mimeMessageHelper.addAttachment(attachment.getName(),attachment);
// 发送邮件
javaMailSender.send(mimeMessageHelper.getMimeMessage());
log.info("发送邮件成功:{}->{}", sendMailer, receivers);
} catch (MessagingException e) {
log.error("发送邮件失败:{}", e.getMessage());
}
}
五、测试
@ApiOperation(value = "发送邮件(spring-boot-starter-mail)")
@GetMapping("/send-mail(spring-boot-starter-mail)/{to}")
public R<String >sendMail(@PathVariable("to") String to) {
mailService.sendAttachmentMailMessage("测试邮件", "这是一封测试邮件。","C:\\Users\\Administrator\\Pictures\\Saved Pictures\\dog.jpg");
return R.ok("邮件已发送");
}
2万+

被折叠的 条评论
为什么被折叠?



