简单实现发送邮件的小功能
1.准备
需要一个邮箱,并开启POP3/IMAP/SMTP服务。
以QQ邮箱为例,邮箱设置-账户,就能开启对应的服务,并获取授权码。
2.引入依赖
<!-- 版本由springboot管理 -->
<!-- 邮件依赖 (必要) -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
<!-- redis (非必要)-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- JWT (非必要) -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
3.在application.yml配置文件中,配置相应的参数
spring:
mail:
host: smtp.qq.com #QQ的发送邮件服务器
username: 邮箱
password: 授权码
4.编写一个工具类
@Data
@Slf4j
@Component
public class MailUtil {
//注入邮件服务
@Autowired
private JavaMailSenderImpl mailSender;
//谁来发
@Value("${spring.mail.username}")
private String from;
/**
* 发送简单邮件
* @param email 发给谁
* @param subject 邮件主题
* @param text 邮件内容
*/
public void sendSimpleMail(String email,String subject,String text){
try {
SimpleMailMessage simpleMailMessage = new SimpleMailMessage();
simpleMailMessage.setFrom(from);
simpleMailMessage.setTo(email);
simpleMailMessage.setSubject(subject);
simpleMailMessage.setText(text);
mailSender.send(simpleMailMessage);
}catch (Exception e){
log.error("发送失败!",e);
throw new RuntimeException(e);
}
}
}
5.编写业务方法,以发送验证码为例
@Async("myExecutor")
public void sendCodeMail(String email) {
//六位随机数的验证码
String code = CodeUtil.randomCode(6);
//邮件主题
String subject = "验证码";
//邮件内容
String text = "验证码:" + code +",10分钟之内有效。";
Map<String,Object> map = new HashMap<>(2)