java实现发送邮件
1. 所需依赖
<!--hutool工具类:https://www.hutool.cn-->
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.19</version>
</dependency>
<!--邮箱工具依赖-->
<dependency>
<groupId>com.sun.mail</groupId>
<artifactId>javax.mail</artifactId>
<version>1.6.2</version>
</dependency>
2. 所需配置信息
2.1 邮件服务器配置
classpath(在标准Maven项目中为src/main/resources)的config目录下新建mail.setting文件,配置内容如下
# 邮件服务器的SMTP地址
host=smtp.qq.com
# 邮件服务器的SMTP端口
port=587
# 发件人(必须正确,否则发送失败)
from=************@qq.com
# 授权码
pass=************
2.2 授权码
2.2.1 授权码的获得(以QQ邮箱为例)
QQ邮箱中SMTP密码是单独生成的授权码,而非你的QQ密码,至于怎么生成,见腾讯的帮助说明:什么是授权码,它又是如何设置?
2.2.2 其余邮箱授权码
可自行查找或者去hutool官网查看
3.Java发送代码示例(以验证码为示例)
/**
* 发送邮箱验证码
* @param email
* @return
*/
@GetMapping("/sendMail")
public Object sendMail(@RequestParam String email){
if (!Validator.isEmail(email)) {
return "邮箱格式不正确";
}
// 查询邮箱是否已被绑定
MyUser myUser = myUserMapper.loadUserByEmail(email);
if (myUser != null) {
// 生成验证码
String code = RandomUtil.randomNumbers(4);
redisUtil.setRedisString("sso:email:code" + email, code, 5, TimeUnit.MINUTES);
MailUtil.send(email, "验证码信息", "【统一认证中心】验证码:" + code + ",您正在登录统一认证中心邮箱账号(若非本人操作,请删除本邮件)", false);
return code;
} else {
return "该邮箱账号不存在、请前往绑定";
}
}