第一步:添加依赖
<!-- springboot 邮件依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
第二步:添加配置
spring:
#邮箱基本配置(必须放在spring标签下级)
mail:
#配置smtp服务主机地址,不同邮箱的地址不太一样
host: smtp.exmail.qq.com
# 协议 默认就是smtp
protocol: smtp
#发送者邮箱
username: zhaoheng@xxx.cn
#配置密码或者授权码(qq邮箱需要授权码)
password: xxxx
# smtp的指定端口(465或587)
port: 465
#默认的邮件编码为UTF-8
default-encoding: UTF-8
# 配置SSL 加密工厂
properties:
mail:
smtp:
auth: true
# 使用腾讯企业邮箱发送邮件,必须使用ssl
ssl:
enable: true
trust: ${spring.mail.host}
#开启debug模式,这样邮件发送过程的日志会在控制台打印出来,方便排查错误
debug: false
配置文件中的参数配置,不同类型的邮箱有少许差异,比如password,如果是QQ邮箱就不需要密码,而是授权码;文中的配置以腾讯企业邮箱为例,其中的 host、port来源如下:
第三部:代码编写
package com.zhh.demo.test;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import javax.mail.internet.MimeMessage;
import java.io.File;
import java.util.Date;
/**
* @Description: 发邮件
* @Author: zhaoheng
* @CreateTime: 2022-12-20
*/
@Slf4j
@Service
public class MailTest {
@Autowired
private JavaMailSender javaMailSender;
/** 邮件发件人 */
@Value("${spring.mail.username}")
private String sendMailer;
public void sendMail() {
MimeMessage message = javaMailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true);
//邮件发件人
helper.setFrom(sendMailer);
//邮件收件人 1或多个
helper.setTo("zhaohengit@163.com");
//邮件主题
helper.setSubject("测试邮件");
//邮件内容
helper.setText("邮件内容。。。", true);
//邮件发送时间
helper.setSentDate(new Date());
// 附件
String filePath = "D:\\temp\\a.txt";
if (StringUtils.hasText(filePath)) {
FileSystemResource file = new FileSystemResource(new File(filePath));
String fileName = filePath.substring(filePath.lastIndexOf(File.separator));
helper.addAttachment(fileName, file);
}
javaMailSender.send(message);
log.info("发送邮件成功");
} catch (Exception e) {
log.error("发送邮件异常!", e);
}
}
}