java邮箱发送验证码

目前项目中需要同时支持短信和邮箱验证,短信用的是腾讯云就不多说了,在此分享一下邮箱验证码发送。
首先,作为发送邮箱,需要开启POP3/SMTP/IMAP,登录邮箱–设置–账户–开启POP3/SMTP/IMAP,开启时可能会有短信验证,开启后显示验证码之类的一串英文,复制保存起来,后面要用

开启之后就可以作为发送邮箱,发验证码给用户了,代码如下
pom包引入:

<!--邮箱发送-->
<dependency><groupId>com.sun.mail</groupId><artifactId>javax.mail</artifactId><version>1.6.2</version>
</dependency>

邮箱发送工具类:

package com.es.biz.common.utils;import com.sun.mail.util.MailSSLSocketFactory;import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;/*** 邮箱发送工具类*/
public class MailUtils {public static void main(String[] args) {sendMail("邮件接收者");}/*** 发送验证码** @param receiveMail* @throws Exception*/public static void sendMail(String receiveMail) {Properties prop = new Properties();// 开启debug调试,以便在控制台查看prop.setProperty("mail.debug", "true");// 设置邮件服务器主机名prop.setProperty("mail.host", "smtp.163.com");// 发送服务器需要身份验证prop.setProperty("mail.smtp.auth", "true");// 发送邮件协议名称prop.setProperty("mail.transport.protocol", "smtp");// 开启SSL加密,否则会失败try {MailSSLSocketFactory sf = new MailSSLSocketFactory();sf.setTrustAllHosts(true);prop.put("mail.smtp.ssl.enable", "true");prop.put("mail.smtp.ssl.socketFactory", sf);// 创建sessionSession session = Session.getInstance(prop);// 通过session得到transport对象Transport ts = session.getTransport();// 连接邮件服务器:邮箱类型,帐号,POP3/SMTP协议授权码 163使用:smtp.163.com,qq使用:smtp.qq.comts.connect("smtp.163.com", "邮件发出者", "上面保存的验证码(一串英文)");// 创建邮件Message message = createSimpleMail(session, receiveMail);// 发送邮件ts.sendMessage(message, message.getAllRecipients());ts.close();} catch (Exception e) {e.printStackTrace();}}/*** @Method: createSimpleMail* @Description: 创建一封只包含文本的邮件*/public static MimeMessage createSimpleMail(Session session, String receiveMail) 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"};StringBuilder stringBuilder = new StringBuilder();for (int i = 0; i < 6; i++) {stringBuilder.append(letters[(int) Math.floor(Math.random() * letters.length)]);}//获取6位随机验证码(中文),根据项目需要选择中英文String verifyCode = String.valueOf(new Random().nextInt(899999) + 100000);// 创建邮件对象MimeMessage message = new MimeMessage(session);// 指明邮件的发件人message.setFrom(new InternetAddress("邮件发出者"));// 指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发message.setRecipient(Message.RecipientType.TO, new InternetAddress(receiveMail));// 邮件的标题message.setSubject("验证码");// 邮件的文本内容message.setContent("您的验证码:" + verifyCode + ",如非本人操作,请忽略!请勿回复此邮箱", "text/html;charset=UTF-8");// 返回创建好的邮件对象return message;}
}

实战总结:邮箱发送验证码相关推荐

  1. Python使用QQ邮箱发送验证码

    向指定对象发送验证码 在做一些个人的demo或者实战项目等,涉及登录验证的,可以通过该方式实现一个简易的邮箱发送验证码. 该方法使用了Python的smtplib第三方库,需要保证发送者的QQ邮箱开通 ...

  2. Spring Boot 整合163或者qq邮箱发送验证码

    前记 最近做的项目中注册功能要用到验证码,本来想用阿里云的短信服务,但是有点小贵,就另辟捷径,选择了用邮箱来发送验证码.记录一下整合过程,也希望能帮助一些有需要的人. 正文 1.Spring Boot ...

  3. java邮箱发送验证码_java 邮箱发送验证码

    packagecom.*******.util.email;importorg.apache.commons.mail.EmailException;importorg.apache.commons. ...

  4. golang邮箱发送验证码

    常用邮箱: QQ 邮箱 POP3 服务器地址:qq.com(端口:995) SMTP 服务器地址:smtp.qq.com(端口:465/587) 163 邮箱: POP3 服务器地址:pop.163. ...

  5. 邮箱发送验证码工具类

    1.邮箱支持引入到pom <dependency><groupId>org.springframework.boot</groupId><artifactId ...

  6. SpringBoot实现邮箱发送验证码(QQ,163等同理)

    SpringBoot实现邮箱发送验证码 准备工作(依赖和yml文件的配置) 邮件的发送代码 补充 准备工作(依赖和yml文件的配置) 我们要远程操纵邮箱就需要获得每个邮箱的密钥: 1.先进入你的qq邮 ...

  7. 邮箱发送验证码和短信发送验证码的学习笔记

    邮箱发送验证码 //邮箱验证码public static boolean sendEmail(String emailaddress,String code) {try {HtmlEmail emai ...

  8. SpringBoot通过qq邮箱发送验证码

    SpringBoot通过qq邮箱发送验证码 1.开启qq授权码 2.编写配置文件 spring:#邮箱验证mail:##163 smtp.163.com(反垃圾系统发送不了了)##qq smtp.qq ...

  9. Java 实现邮箱发送验证码——QQ邮箱为例

    JAVA实现使用QQ邮箱发送验证码功能 QQ邮箱设置 第一步 ,打开QQ邮箱(地址:https://mail.qq.com/): 第二步 ,登录后点击设置 第三步,点击账户,下拉找到POP3/IMAP ...

最新文章

  1. 1 字节的 utf-8 序列的字节 1 无效_字节码文件结构详解
  2. linux下安装sbt_如何在Linux上安装SBT
  3. 三维重建缺数据集?来看看Facebook最新发布的CO3D
  4. 升级在即,BU发布新版本并将Mempool未确认交易限制增加到500
  5. 分布式ActiveMQ集群--转载
  6. Codeforces Beta Round #4 (Div. 2)【完结】
  7. vc 中C 语言命名规范(转)
  8. mysql_ping与mysql长连接
  9. How where used list in SAP GUI is implemented
  10. 0限流电阻 stm32_上/下拉电阻
  11. BZOJ 1529: [POI2005]ska Piggy banks( 并查集 )
  12. 2018年小米竟发布了16款手机,然而最值得入手的是它!
  13. idea引不进jdk的包_idea install 时提示jdk的某个jar包的包不存在的问题
  14. linux执行命令在哪,在linux终端中执行root命令有哪些方法
  15. 传奇病毒劫持流量手法分析
  16. 论文阅读:Transformer-Based Neural Network for Answer Selection in Question Answering
  17. 【MLPs+ESN】利用多层感知机MLPs对经典ESN(回声状态网络)的输出权值计算进行优化的MATLAB仿真
  18. 【PHPWord】解决Word转PDF可能出现的空白页问题 | 插入换行符、分页符、定义文档网络时对齐网格
  19. Apache Log4j 2升级到2.16.0最新版本的解决方案
  20. R语言小实践---云词分析

热门文章

  1. 2018校招唯品会软件测试岗在线笔试
  2. 从零开始打造一个Android 3D立体旋转容器
  3. C语言期末大作业15个(附源码)成绩管理系统、图书馆管理系统、学生打卡系统、超市信息管理系统、学生考勤系统、职工信息管理系统源码、歌曲信息管理系统、超市收款系统等等
  4. Kubernetes CKS 2021【3】---Cluster Setup - Dashboard
  5. 游戏录屏软件哪个好?游戏录屏软件推荐
  6. 初识EPANET 2(供水管网水里模型)
  7. 软件项目客户迟迟不肯验收怎么办?
  8. 三个变量存在一个协整方程_6个变量存在3个协整关系能直接回归了吗?
  9. Corejava知识点
  10. 软件测试方法划分等价类,软件测试基础-软件测试方法之等价类划分.ppt