Java实现邮箱验证码
2024-09-29 20:30:08
前言
相比于java实现短信验证码,邮箱验证码就简单了许多,目前只是简单的利用java发送自定义内容至指定邮箱,等过几天再弄短信和邮箱验证码Web版本的。查询网上资料,得知相比于网易邮箱,QQ邮箱是最麻烦的,而且平时我个人使用的也是QQ邮箱,所以也是选择了QQ邮箱。
配置协议
1.首先,我们需要打开发送方的QQ邮箱,也就是你的邮箱,点击上方的设置。
进入之后,点击账户,下滑至POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,将POP3/SMTP服务打开即可
开启服务之后,会获得一个授权码,把它记下来,后面写代码的时候会用的到。
代码实现(黄色部分需修改为自己数据)
Mail_Java.java:
package util; import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import com.sun.mail.util.MailSSLSocketFactory; /**
* JavaMail发送邮件: java版本-与web无关
* 前提是QQ邮箱里帐号设置要开启POP3/SMTP协议
*
*
*/
public class Mail_java {
public static void main(String[] args) throws Exception {
Properties prop = new Properties();
// 开启debug调试,以便在控制台查看
prop.setProperty("mail.debug", "true");
// 设置邮件服务器主机名
prop.setProperty("mail.host", "smtp.qq.com");
// 发送服务器需要身份验证
prop.setProperty("mail.smtp.auth", "true");
// 发送邮件协议名称
prop.setProperty("mail.transport.protocol", "smtp");
// 开启SSL加密,否则会失败
MailSSLSocketFactory sf = new MailSSLSocketFactory();
sf.setTrustAllHosts(true);
prop.put("mail.smtp.ssl.enable", "true");
prop.put("mail.smtp.ssl.socketFactory", sf);
// 创建session
Session session = Session.getInstance(prop);
// 通过session得到transport对象
Transport ts = session.getTransport();
// 连接邮件服务器:邮箱类型,帐号,POP3/SMTP协议授权码 163使用:smtp.163.com
ts.connect("smtp.qq.com", "发送方的QQ号", "POP3/SMTP协议授权码");
// 创建邮件
Message message = createSimpleMail(session);
// 发送邮件
ts.sendMessage(message, message.getAllRecipients());
ts.close();
} /**
* @Method: createSimpleMail
* @Description: 创建一封只包含文本的邮件
*/
public static MimeMessage createSimpleMail(Session session) throws Exception {
// 获取6为随机验证码
String[] letters = new String[] {
"q","w","e","r","t","y","u","i","o","p","a","s","d","f","g","h","j","k","l","z","x","c","v","b","n","m",
"A","W","E","R","T","Y","U","I","O","P","A","S","D","F","G","H","J","K","L","Z","X","C","V","B","N","M",
"0","1","2","3","4","5","6","7","8","9"};
String stringBuilder ="";
for (int i = 0; i < 6; i++) {
stringBuilder = stringBuilder + letters[(int)Math.floor(Math.random()*letters.length)];
} // 创建邮件对象
MimeMessage message = new MimeMessage(session);
// 指明邮件的发件人
message.setFrom(new InternetAddress("发送方QQ@qq.com"));
// 指明邮件的收件人,发件人和收件人如果是一样的,那就是自己给自己发
message.setRecipient(Message.RecipientType.TO, new InternetAddress("接受方QQ@qq.com"));
// 邮件的标题
message.setSubject("JavaMail测试");
// 邮件的文本内容
message.setContent("欢迎您注册【OG高玩会】,账号注册验证码为(一分钟有效):"+stringBuilder+",请勿回复此邮箱", "text/html;charset=UTF-8"); // 返回创建好的邮件对象
return message;
}
}
所需jar包(找了好长时间)
链接:https://pan.baidu.com/s/14PvQvB4hUBUrrk-uTus_6w
提取码:xeg3
最新文章
- ViewPager的广告条轮播
- Android OnTouchListener,OnClickListener和OnLongClickListener的关系
- TCP中需要了解的东西
- js基础第四天
- CSS3圆角(border-radius)
- 简单实现图片间的切换动画 主要用到ViewPager
- evel()与JSON.parset()的区别
- 虎牙直播弹幕转换字幕格式 基于Node.js 的 huya-danmu
- 【WePY小程序框架实战四】-使用async&;await异步请求数据
- 【代码笔记】iOS-获得现在的时间(2015-09-11)
- Python3编写网络爬虫02-基本请求库requests的使用
- 图学ES6-2.let与const命令
- Linux-centos6.8下关闭防火墙
- com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value &#39;&#214;&#208;&#185;&#250;&#177;&#234;&#215;&#188;&#202;&#177;&#188;&#228;&#39; is unrecognized or represents more than one time zone. 问题解决方法
- safari input默认样式
- 《DSP using MATLAB》Problem 2.20
- 分布式一致性协议-2PC与3PC(二)
- apt-get和apt-cache命令实例展示
- MySQL &; export
- 设计模式之笔记--适配器模式(Adapter)
热门文章
- java 正则提取字符串中的电话号码
- 工作3年java面试题整理(自用)
- OSCP Learning Notes - Post Exploitation(2)
- 使用python打造一款音乐播放器
- 题解 洛谷 P2046 【[NOI2010]海拔】
- 大一寒假我在一个oj网站只刷了这些题从此入门了绝大部分通用算法
- scp的使用以及cp的对比
- MySQL Front远程连接数据库
- 自定义placeholder样式
- python map() filter() reduce()函数的用法以及实例