一文详解如何使用Java来发送qq邮箱邮件
1、准备工作
(1)打开qq邮箱服务授权
首先进入到qq邮箱主页,点击左上方的设置按钮

进入设置页面后,再点击账号

往下滑,然后可以看到 “POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”
然后点击开启服务(因为我这里是已经开启了,默认情况是没有开启的)

点击开启后会跳转到另一个页面,同样找到“POP3/IMAP/SMTP/Exchange/CardDAV 服务”,然后点击生成授权码

即可生成一段字符串,
!!!将该字符串复制保存下来,不然的话,下次就只能再重新生成授权码了
2、接口调用
(1)引入依赖
再pom.xml文件中引入下方依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.5</version>
</dependency>
(2)验证码生成函数
这一步大家有其他方法也都可以,这里只是生成验证码字符串
public String achieveCode() { //由于数字 1 、 0 和字母 O 、l 有时分不清楚,所以,没有数字 1 、 0
String[] beforeShuffle= new String[] { "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F",
"G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a",
"b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
"w", "x", "y", "z" };
List list = Arrays.asList(beforeShuffle);//将数组转换为集合
Collections.shuffle(list); //打乱集合顺序
StringBuilder sb = new StringBuilder();
for (int i = 0; i < list.size(); i++) {
sb.append(list.get(i)); //将集合转化为字符串
}
return sb.toString().substring(3, 9); //截取字符串第4到8
}
3、接口代码编写
@Autowired
private RedisService redisService;
@GetMapping("/getotp/{email}")
public AjaxResult getOtp(@PathVariable String email, HttpSession session) throws EmailException {
String otpCode = this.achieveCode();
// session.setAttribute(email, otpCode);
redisService.setCacheObject("otpCode:" + email, otpCode, 2L, TimeUnit.MINUTES);
HtmlEmail emails=new HtmlEmail();
emails.setHostName("smtp.qq.com");
emails.setCharset("utf-8");
emails.setSmtpPort(465);
emails.setSSLOnConnect(true);
emails.addTo(email);//设置收件人
emails.setFrom("11111@qq.com","lalala");
emails.setAuthentication("11111@qq.com","gwbtpcktyxnubefc");
emails.setSubject("验证码来略,快快查收");//设置发送主题
emails.setMsg(optCode);//设置发送内容
emails.send();//进行发送
return success(otpCode);
}
(如果大家项目没有引入Redis,也可以用session代替,因为我这里是一整个业务流程,后续还需要对比验证码,所以需要用到换成,大家测试的话也可以去掉)
再这一段语句里 emails.setAuthentication(“11111@qq.com”,“gwbtpcktyxnubefc”);
其中邮箱即为刚才生成授权码的邮箱,后面一段字符串就是授权码。
在编写完上述代码后,即可通过调用此按钮来发送邮件。
4、HTML型邮件
通过上述代码,只能发送一个简单的字符,但是qq邮箱也是支持html解析的,我们可以在其中设置html代码,让我们的邮件“精致”一点,只需要更改emails.setMsg()中的参数即可
emails.setMsg("<!DOCTYPE html>\n" +
"<html lang=\"en\">\n" +
"<head>\n" +
" <meta charset=\"UTF-8\">\n" +
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n" +
" <title>Email Template</title>\n" +
"</head>\n" +
"<body style=\"font-family: Arial, sans-serif; background-color: #f4f4f4; padding: 20px;\">\n" +
"\n" +
" <div style=\"max-width: 600px; margin: 0 auto; background-color: #ffffff; padding: 20px; border-radius: 10px; box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);\">\n" +
"\n" +
" <h1 style=\"color: #333333; text-align: center;\">我来组成头部</h1>\n" +
"\n" +
" <p style=\"color: #555555; text-align: center;\">我来组成标题</p>\n" +
"\n" +
" <p style=\"color: #555555; text-align: center;\">验证码是" + otpCode + "</p>\n" +
"\n" +
" <p style=\"color: #555555;\">lalalalala^(* ̄(oo) ̄)^,</p>\n" +
"\n" +
" <p style=\"color: #555555;\">lalalalala</p>\n" +
"\n" +
" <p style=\"color: #555555;\">哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈</p>\n" +
"\n" +
" <p style=\"color: #555555;\">哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈</p>\n" +
"\n" +
" <p style=\"color: #555555;\">哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈</p>\n" +
"\n" +
" <p style=\"color: #888888; text-align: center; font-size: 12px; margin-top: 20px;\">© 2024 Example Company. All rights reserved.</p>\n" +
"\n" +
" </div>\n" +
"\n" +
"</body>\n" +
"</html>\n");//设置发送内容总结
到此这篇关于使用Java来发送qq邮箱邮件的文章就介绍到这了,更多相关Java发送qq邮箱邮件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Springboot maven plugin插件原理及作用
这篇文章主要介绍了Springboot maven plugin插件原理及作用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2020-10-10
java多线程CyclicBarrier的使用案例,让线程起步走
这篇文章主要介绍了java多线程CyclicBarrier的使用案例,让线程起步走!具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2021-02-02
Spring ApplicationContext接口功能详细介绍
ApplicationContext是Spring应用程序中的中央接口,由于继承了多个组件,使得ApplicationContext拥有了许多Spring的核心功能,如获取bean组件,注册监听事件,加载资源文件等2023-02-02
Java数据库连接池之DBCP浅析_动力节点Java学院整理
这篇文章主要为大家详细介绍了Java数据库连接池之DBCP的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-08-08
使用@Value为静态变量导入并使用导入的静态变量进行初始化方式
这篇文章主要介绍了使用@Value为静态变量导入并使用导入的静态变量进行初始化方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-02-02


最新评论