零、前言
项目中经常会需要发送邮件的功能,比如发送验证码之类的。所以,今天学习了一下spring boot发送邮件的方法。
一、所需jar
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
二、邮箱服务配置
在springboot工程的application.properties文件中添加以下设置:
spring.output.ansi.enabled=ALWAYS
# 邮箱服务器地址
spring.mail.host=smtp.qq.com
#端口号
spring.mail.port=587
#发件人邮箱
spring.mail.username=123456789@qq.com
#16位授权码,并非qq密码
spring.mail.password=xxxxxxxxxxxxxxxx
spring.mail.default-encoding=utf-8
举例qq邮箱:
前往设置-->账户-->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
然后按照步骤操作就会得到授权码,添加至spring.mail.password处即可。
三、邮件发送接口
package com.zhangsan.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
/**
* @Description 邮件服务类
* @ClassName EmailService
* @Author zhangsan
* @date 2020.07.25 14:03
*/
@Component
public class EmailService {
@Autowired
private JavaMailSender mailSender;
@Value("${spring.mail.username}")
private String sender;
/**
* @Description 发送简单邮件
* @Param receiver 邮件接收人
* @Param subject 邮件主题
* @Param context 邮件内容
* @Author zhangsan
* @date 2020.07.25 14:50
**/
public void sendSimpleMail(String receiver, String subject, String content) {
SimpleMailMessage message = new SimpleMailMessage();
message.setFrom(sender);
message.setTo(receiver);
message.setSubject(subject);
message.setText(content);
try {
mailSender.send(message);
System.out.println("简单邮件已发送");
} catch (Exception e) {
System.out.println("发送简单邮件失败"+e);
}
}
/**
* @Description 发送html邮件
* @Param receiver 邮件接收人
* @Param subject 邮件主题
* @Param context 邮件内容
* @Author zhangsan
* @Date 2020.07.25 14:50
**/
public void sendHtmlMail(String receiver, String subject, String content) {
MimeMessage message = mailSender.createMimeMessage();
try {
MimeMessageHelper helper = new MimeMessageHelper(message, true);
helper.setFrom(sender);
helper.setTo(receiver);
helper.setSubject(subject);
helper.setText(content, true);
mailSender.send(message);
System.out.println("html文件发送成功");
} catch (MessagingException e) {
System.out.println("发送html文件时出错--> " + e);
}
}
/**
* @return null
* @Description 发送模板邮件
* @Param
* @Author zhangsan
* @Date 2020.07.25 15:10
**/
public void sendTemplateMail() {
//TODO
}
}
四、结束
简单记录了最基本的邮件发送,在这期间可能会产生535错误,我是因为发送太频繁,然后重新生成了一个16位授权码又恢复正常了,目前只是简单玩玩,后续正式使用再去接触更多的问题,拜拜!