实现163邮箱发送邮件功能
准备工作:
先有一个163邮箱账号: 做一些邮件发送的设置
勾选相关服务设置,并且设置客户端授权密码,这个密码是需要在代码中输入的,相当于是你发件箱的客户端密码。
代码准备:
- 引入相关依赖包
<!-- 支持发送邮件 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-mail</artifactId>
</dependency>
- 在配置文件中注入发送邮件的属性信息
# 邮箱发送验证码相关
spring.mail.default-encoding=UTF-8
spring.mail.host=smtp.163.com
#端口
spring.mail.port=25
#协议
spring.mail.protocol=smtp
#发送者的邮箱账号
[email protected]
#发送者的邮箱密码
spring.mail.password=huan6`(此处设置的是客户端密码)
- 发送邮件代码
@Autowired
private JavaMailSender jms;
/**
* 实现邮箱发送
* @param map
* @return
*/
@Override
public String sendEmailCode(Map<String, Object> map) {
String email = (String)map.get("email");
// 生成随机验证码
//int ecode = (int) ((Math.random() * 9 + 1) * 100000);
String ecode = createRandomNum(6);
//建立邮件消息
try {
SimpleMailMessage mainMessage = new SimpleMailMessage();
//发送者 TODO
mainMessage.setFrom(sendEmail); .// 发件箱
//接收者
mainMessage.setTo(email);
//发送的标题
mainMessage.setSubject("two room 邮箱验证码");
//发送的内容
mainMessage.setText("您好,本次邮箱验证码为:"+ecode+" ,验证码在30分钟之内有效。");
jms.send(mainMessage);
}catch (Exception e){
e.printStackTrace();
LOGGER.error("邮箱发送失败,请检查邮箱 {} ",e);
return "";
}
return ecode;
}
到目前为止就能发送邮件了。
在这里补充一下自己遇到的一个小坑: 部署在服务器上,记得开放邮箱端口 25
如果自己部署项目的服务上没有开放该端在这里插入图片描述口,是无法实现邮件发送的。
看到博客是缘分,那就扫一扫吧