废话不多说直接贴代码:
1.依赖
<!--java发送qq邮件-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
2.yml配置,可能格式有点乱
spring:
mail:
host: smtp.qq.com
protocol: smtp
username: 264****369@qq.com
password: rykwlagummhvdjcf
default-encoding: UTF-8
port: 587
properties:
mail:
smtp:
socketFactoryClass: javax.net.ssl.SSLSocketFactory
debug: true
3.代码
@Slf4j
@Configuration
public class SMSUtils {
//读取yml文件中username的值并赋值给form
@Value("${spring.mail.username}")
private String from;
@Resource
private JavaMailSender mailSender;
public void creatMimeMessage(String email,String code) {
//创建邮件 SimpleMailMessage是创建文件 包括内容,邮件消息,发件人,收件人……
SimpleMailMessage message = new SimpleMailMessage();
//你的邮箱
message.setFrom(from);
//发送到的邮箱
message.setTo(email);
message.setSubject("瑞吉外卖注册");
//把验证码存入resdis中,设置过期时间为三分钟,不需要可忽略
// redisTemplate.opsForValue().set(mailTo,fourBitRandom,3, TimeUnit.MINUTES);
//setText 就是设置邮件发送的内容,根据自己的需要自行编写即可。
message.setText("【瑞吉外卖】"+ code +"(瑞吉外卖注册验证码),如非本人操作,请忽略!");
//发送邮件
mailSender.send(message);
log.info("邮件已经发送");
}
}
到这代码开发基本结束:
但是可能mailSender会出现空指针错误,找了网上的资料发现了问题所在,
因为我们将这个类是作为一个工具类,但是我们有将mailSender交给了Spring进行管理,
所以对这个类不能new 也需要交给Spring进行管理,所以得注入的方式调用方法
错误示范:
SMSUtils smsUtils = new SMSUtils(); smsUtils.creatMimeMessage(email,code);
正确应该是:
smsUtils.creatMimeMessage(email,code);
前提是需要把整个类交给Spring进行管理,所有我在类名上加了@Configuration
到这个问题解决!!!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/105086.html