我们在日常开发中,需要实现一个对邮箱的发送,今天就实现邮箱的发送工具类,只需要一些注册邮箱之后的配置即可,我这边使用的是qq邮箱
0.加上依赖
<!--邮箱-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
1.配置yml文件(需要到官网上去注册,不知道怎么获取的可以看视频或者问chatGPT:https://mail.qq.com/QQ邮箱,为亿万用户提供高效稳定便捷的电子邮件服务。你可以在电脑网页、iOS/iPad客户端、及Android客户端上使用它,通过邮件发送3G的超大附件,体验文件中转站、日历、记事本、漂流瓶等特色功能。QQ邮箱,常联系。https://mail.qq.com/)
spring: # Spring Boot应用程序配置的根节点
mail: # 邮件相关配置
username: # 你自己的QQ邮箱的用户名,需要填写你的QQ邮箱地址
password: # 你自己的QQ邮箱的密钥/密码,需要填写你的QQ邮箱登录密码
host: smtp.qq.com # SMTP服务器主机名,这里设置为QQ邮箱的SMTP服务器
port: 465 # SMTP服务器端口,通常情况下使用SSL的SMTP协议使用465端口
protocol: smtp # 使用SMTP协议发送邮件
properties: # 邮件相关的属性配置
mail: # 邮件协议属性配置
smtp: # SMTP协议属性配置
ssl: # SSL/TLS属性配置
enable: true # 启用SSL,表示使用加密传输邮件
auth: true # 启用SMTP身份验证,需要提供用户名和密码
starttls: # STARTTLS属性配置,用于在未加密连接上启用TLS
enable: true # 启用STARTTLS
required: true # 要求必须使用STARTTLS
socketFactory: # Socket工厂属性配置,用于SSL连接
port: 465 # SSL连接的端口,与SMTP服务器的端口一致
class: javax.net.ssl.SSLSocketFactory # 使用的Socket工厂类,通常用于SSL连接
# 请确保填写你自己的QQ邮箱地址和密码,以及确保QQ邮箱允许使用SMTP服务来发送邮件
2.写一个发送邮箱工具类
@Component
public class MailUtil {
private static MailUtil INSTANCE = new MailUtil();
@Resource
JavaMailSender mailSender;
@Resource
JavaMailSender javaMailSender;
@PostConstruct
public void init(){
INSTANCE.mailSender = mailSender;
}
/**
* 发送简单邮件
*
* @param subject 主题
* @param content 内容
* @param from 发件人
* @param to 收件人
*/
public void sendSimpleMail(String subject,String content,String from,String[] to){
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(from);
message.setTo(to);
// 主题
message.setSubject(subject);
// 邮件正文
message.setText(content);
message.setSentDate(new Date());
// 发送邮件
INSTANCE.mailSender.send(message);
}
public void sendMimeMail(String subject,String content,String from,String[] to) throws MessagingException {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
// 构建一个邮件对象
MimeMessageHelper helper = new MimeMessageHelper(mimeMessage,true);
// 设置邮件主题
helper.setSubject(subject);
// 设置邮件发送者,这个跟application.yml中设置的要一致
helper.setFrom(from);
helper.setTo(to);
// 设置邮件发送日期
helper.setSentDate(new Date());
// 设置邮件的正文 true:是html文件
helper.setText(content,true);
// 发送邮件
javaMailSender.send(mimeMessage);
}
}
3.编写controller控制器接口
@RestController
@Api(tags = "邮箱发送")
@RequestMapping("/mail")
public class MailServlet {
@Resource
private MailUtil mailUtil;
@PostMapping("/to")
@ApiOperation("发送邮件")
@ApiImplicitParams({@ApiImplicitParam(name = "subject", value = "邮件主题"), @ApiImplicitParam(name = "content", value = "邮件内容")
, @ApiImplicitParam(name = "from", value = "发送邮件的QQ邮箱"), @ApiImplicitParam(name = "to", value = "要发送到的QQ邮箱,用,隔开")})
public R to(String subject, String content, String from, String to) {
String[] split = to.split(",");
try {
mailUtil.sendSimpleMail(subject, content, from, split);
return R.ok("发送成功");
} catch (Exception e) {
e.fillInStackTrace();
return R.fail("发送失败");
}
}
@PostMapping("/tof")
@ApiOperation("发送富文本邮件")
@ApiImplicitParams({@ApiImplicitParam(name = "subject", value = "邮件主题"), @ApiImplicitParam(name = "content", value = "邮件内容<html>格式")
, @ApiImplicitParam(name = "from", value = "发送邮件的QQ邮箱"), @ApiImplicitParam(name = "to", value = "要发送到的QQ邮箱,用,隔开")})
public R tof(String subject, String content, String from, String to) {
String[] split = to.split(",");
try {
mailUtil.sendMimeMail(subject, content, from, split);
return R.ok("发送成功");
} catch (Exception e) {
e.fillInStackTrace();
return R.fail("发送失败");
}
}
}
最后就可以发送邮箱了,今天的分享就到这里了