IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> java实现发送qq邮箱验证码 -> 正文阅读

[Java知识库]java实现发送qq邮箱验证码

1、登录qq邮箱,开启POP3/SMTP服务

路径:qq邮箱--->设置---->选择账户----> 打开

按照要求发送短信后得到授权码

得到授权码后要记得点击确定,页面拉到最下方点击保存设置。

2、pom.xml加入依赖

<dependency>
	    <groupId>org.apache.commons</groupId>
	    <artifactId>commons-email</artifactId>
	    <version>1.5</version>
</dependency>

?加入后会自动加载其他两个相关依赖

3、测试类(两种发送方式都测试成功了)

package com.ymo;

import java.security.GeneralSecurityException;
import java.util.Properties;
import java.util.Random;

import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.junit.Test;

import com.sun.mail.util.MailSSLSocketFactory;

public class EmalTest {
	String yzm;
	
	@Test
	public void send() {
		yzm = random1();
		try {
			 //HtmlEmail方式
			//sendEmail();
			//javax.mail方式
			sendMail("XXX@qq.com", "XXX", "XXX@qq.com", "测试", "<html><h1>我的验证码:"+yzm+"</h1></html>");
		} catch (MessagingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (GeneralSecurityException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	/**
	 * 方式1:发送QQ邮件
	 */
	public void sendEmail() {
		HtmlEmail send = new HtmlEmail();//创建一个HtmlEmail实例对象
		// 获取随机验证码   
		String resultCode = yzm;       
		try {    
			send.setHostName("smtp.qq.com");	  		
			send.setAuthentication("XXX@qq.com", "XXX"); //第一个参数是发送者的QQEamil邮箱   第二个参数是刚刚获取的授权码
   
			send.setFrom("XXX@qq.com", "orison有限公司");//发送人的邮箱为自己的,用户名可以随便填  记得是自己的邮箱不是qq
//			send.setSmtpPort(465); 	//端口号 可以不开       
			send.setSSLOnConnect(true); //开启SSL加密  
			send.setCharset("utf-8");      
			send.addTo("XXX@qq.com");  //设置收件人    email为你要发送给谁的邮箱账户   
			send.setSubject("测试测试"); //邮箱标题  
			send.setMsg("HelloWorld!<font color='red'>您的验证码:</font>   " + resultCode + " ,五分钟后失效"); //Eamil发送的内容
			send.send();  //发送 
		} catch (EmailException e) { 
			e.printStackTrace();    
		} 
	} 
	
	
	 /**方式2:发送QQ邮件
	    * @param sender 发送方的邮箱
	    * @param auth qq邮箱中申请的16位授权码
	    * @param to 接收人邮箱
	    * @param title 邮件标题
	    * @param content 邮件内容
	    * */
	   public static void sendMail(String sender,String auth,String to,String title,String content) throws MessagingException, GeneralSecurityException, javax.mail.MessagingException {
	       //创建一个配置文件并保存
	       Properties properties = new Properties();
	       properties.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
	       properties.setProperty("mail.smtp.socketFactory.fallback", "false");
	       properties.setProperty("mail.smtp.port", "465");
	       properties.setProperty("mail.smtp.socketFactory.port", "465");
	       
	       
	       properties.setProperty("mail.host","smtp.qq.com");
	       properties.setProperty("mail.transport.protocol","smtp");
	       properties.setProperty("mail.smtp.auth","true");
	       //QQ存在一个特性设置SSL加密
	       MailSSLSocketFactory sf = new MailSSLSocketFactory();
	       sf.setTrustAllHosts(true);
	       properties.put("mail.smtp.ssl.enable", "true");
	       properties.put("mail.smtp.ssl.socketFactory", sf);

	       //创建一个session对象
	       Session session = Session.getDefaultInstance(properties, new Authenticator() {
	           @Override
	           protected PasswordAuthentication getPasswordAuthentication() {
	               return new PasswordAuthentication(sender,auth);
	           }
	       });
	       //开启debug模式
	       session.setDebug(true);
	       //获取连接对象
	       Transport transport = session.getTransport();
	       //连接服务器
	       transport.connect("smtp.qq.com",sender,auth);
	       //创建邮件对象
	       MimeMessage mimeMessage = new MimeMessage(session);
	       //邮件发送人
	       mimeMessage.setFrom(new InternetAddress(sender));
	       //邮件接收人
	       mimeMessage.setRecipient(Message.RecipientType.TO,new InternetAddress(to));
	       //邮件标题
	       mimeMessage.setSubject(title);
	       //邮件内容
	       mimeMessage.setContent(content,"text/html;charset=UTF-8");
	       //发送邮件
	       transport.sendMessage(mimeMessage,mimeMessage.getAllRecipients());
	       //关闭连接
	       transport.close();
	   }
	
	//生成6位数  验证码
	public static String random1(){
		String code = "";
		Random rd=new Random();
		for (int i = 0; i < 6; i++) {
			int r = rd.nextInt(10); //每次随机出一个数字(0-9)
			code = code + r;  //把每次随机出的数字拼在一起
		}
		System.out.println(code);
		return code;
	} 
}

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-05-10 11:43:27  更:2022-05-10 11:44:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 23:38:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码