SpringBoot可以通过导入依赖的方式集成多种技术,这当然少不了我们常用的邮箱,现在本章演示SpringBoot整合QQ邮箱发送邮件....
下面按步骤进行:
1.获取QQ邮箱授权码
1.1 登录QQ邮箱
1.2 开启SMTP服务
找到下图中的SMTP服务区域,如果当前账号未开启的话自己手动开启。
1.3 获取授权码
进入上图中的【管理服务】后:在【安全设置中生成授权码】,也可以直接点击【继续生成授权码】来生成...
2.导入依赖
自己新建一个SpringBoot项目,在pom.xml文件中导入依赖:
<!-- 邮件依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
3.配置文件
导入依赖后在配置文件中添加以下配置(本文章使用properties文件):
spring.mail.host=smtp.qq.com
spring.mail.port=587
# 用于发送验证码的qq邮箱
spring.mail.username=(此处换成自己的QQ邮箱地址)
# 邮箱授权码
spring.mail.password=(换成上面邮箱的授权码)
spring.mail.protocol=smtp
spring.mail.properties.mail.smtp.auth=true
# 使用587接口需要启用STARTTLS加密
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=true
4.发送邮件
此处只演示service层发送邮件代码。
@Service
public class MailServer {
@Autowired
private JavaMailSender javaMailSender;
//发送邮件方法
public ResponseResult sendAuthCode(String emailAddress) throws MessagingException, UnsupportedEncodingException {
MimeMessage mimeMailMessage = javaMailSender.createMimeMessage();
MimeMessageHelper mimeMessageHelper = new MimeMessageHelper(mimeMailMessage);
String myEmail = "我的邮箱";
String displayName = "发送邮箱时显示的名称"; //这个可以不选
String emailAddress = "目标邮箱地址";
String subject = "邮件主题";
String text = "邮件内容";
mimeMessageHelper.setFrom(myEmail,displayName);
mimeMessageHelper.setTo(emailAddress);
mimeMessageHelper.setSubject(subject);
mimeMessageHelper.setText(text);
try {
javaMailSender.send(mimeMailMessage);
authCodeUtil.setAuthCodeIntoRedis(emailAddress,authCode);
} catch (MailException e) {
return "无法发送邮件";
}
return "发送成功";
}
}
可能遇见的问题
在springboot整合QQ邮箱的过程中,可能回遇到 “连接超时”,这时检查配置文件中的邮箱地址、授权码,如果这两项没错的话可能是网络问题,我们可以在终端ping一下qq邮箱的邮件发送服务器看一下当前网络是否可以连接qq邮箱,如下图:
如果结果是“请求超时”的话建议换个网络再尝试。。。。