简介
使用SpringBoot配置+注解方式,快速上手后端发送邮件功能,最简单的应用——可以用来发验证码。
一、pom文件导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
二、配置yml文件
或者properties文件
spring:
mail:
host: smtp.qq.com # 假设使用QQ的smtp邮件服务器,需要QQ邮箱开启授权
username: emailname # 邮箱名
password: **** # 邮箱授权码,需要开启pop3/smtp/imap服务
default-encoding: utf-8
三、写一个简单的邮件管理类
使用@Component注解,自动装载为一个bean
@Component
public class EmailManager {
// 这里填邮件发送方的email地址
final static String emailSender = "xxxx@qq.com";
@Autowired
private JavaMailSender mailSender;
//emailReceiver为邮件收取方的email地址,code为验证码
public void sendMail(String emailReceiver, String code) {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom(emailSender);
simpleMailMessage.setTo(emailReceiver);
simpleMailMessage.setSubject("XX应用验证码");
simpleMailMessage.setText("您本次的验证码为" + code);
mailSender.send(simpleMailMessage);
}
}
四、在controller里写一个获取验证码的接口
@Autowired
private EmailManager emailManager;
//获取验证码接口
@RequestMapping(value = "/getcode", method = {RequestMethod.POST}, consumes = {CONTENTTYPE})
@ResponseBody
public String getCode(@RequestParam(name = "email") String email) {
//生成6位随机验证码
int randomInt = new Random().nextInt(999999) + 10000;
String code = String.valueOf(randomInt);
//使用session将code与email关联
httpServletRequest.getSession().setAttribute(email, code);
//将验证码通过邮箱通道发送给用户
emailManager.sendMail(email, code);
log.info("email = {} & code = {}", email, code);
return "success";
}
五、应用部署到阿里云服务器的特殊处理
若将应用部署在阿里云等服务器上,默认情况下是发不出去的。
由于安全等原因,阿里云服务器将25端口禁用掉了,因此需要指定其他端口号(如465)。
另外可以加一个外挂的配置文件,这样不需要重新打包jar再上传,只需要重新启动jar即可。
# 在jar包同级目录下,新建一个application.properties,内容如下:
spring.mail.properties.mail.smtp.ssl.trust=smtp.qq.com
#SSL证书Socket工厂
spring.mail.properties.mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
#使用SMTPS协议465端口
spring.mail.properties.mail.smtp.socketFactory.port=465
spring.mail.properties.mail.smtp.auth=true
spring.mail.properties.mail.smtp.starttls.enable=true
spring.mail.properties.mail.smtp.starttls.required=tru
# 然后启动jar时,指定外挂配置文件即可
java -jar xx.jar --spring.config.addition-location=application.properties