JavaWeb实现qq邮箱验证(一)[通俗易懂]

JavaWeb实现qq邮箱验证(一)[通俗易懂]需求:用户注册时给邮箱发送邮件,得到验证码并填写,进行激活邮箱。有基础的可以直接看下篇JavaWeb实现qq邮箱验证(二):https://blog.csdn.net/BlackPlus28/article/details/85114001首先一步一步来写,这篇是以java简单的发送邮件一、设置发件人的邮箱和密码等 // 下面需要补充的是,你自己的邮箱和授权码还…

大家好,又见面了,我是你们的朋友全栈君。

需求:用户注册时给邮箱发送邮件,得到验证码并填写,进行激活邮箱。

有基础的可以直接看下篇

JavaWeb实现qq邮箱验证(二):https://blog.csdn.net/BlackPlus28/article/details/85114001

首先一步一步来写,这篇是以java简单的发送邮件

一、设置发件人的邮箱和密码等

       //  下面需要补充的是,你自己的邮箱和授权码还有收件人邮箱。
       // 发件人的邮箱
		public static String emailAccount = "xxxxxxxxx";
		// 发件人邮箱密码(有的是授权码)
		public static String emailPassword = "xxxxxxxxx";
		//  发件人邮箱服务地址(这里以qq邮箱为例)  网易是:smtp.163.com
		public static String emailSMTPHost = "smtp.qq.com";
		//  收件人邮箱
		public static String receiveMailAccount = "xxxxxxxxx";

java邮箱的授权码去哪找,看下图(已经开启的直接跳过),直接开启即可。网易同样道理。为什么我使用qq邮箱,没使用网易,下篇发送邮件再说。

JavaWeb实现qq邮箱验证(一)[通俗易懂]

JavaWeb实现qq邮箱验证(一)[通俗易懂]

JavaWeb实现qq邮箱验证(一)[通俗易懂]

 

二、创建一封邮件(发件人、收件人、邮件内容)

       /**
		 * @param session
		 * @param sendMail
		 * @param receiveMail
		 * @param html
		 * @throws MessagingException
		 * @throws IOException 
		 * cc:抄送、 Bcc:密送、 To:发送
		 */
		public static  MimeMessage creatMimeMessage(Session session,String sendMail,String receiveMail,String html) throws MessagingException, IOException {
			// 1、创建一封邮件对象
			MimeMessage message = new MimeMessage(session);
			// 2、From:发件人
			message.setFrom(new InternetAddress(sendMail, "发件人昵称", "UTF-8"));
			// 3、To:收件人(可以增加多个收件人:抄送或者密送)
			message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiveMail, "张三", "UTF-8"));
			// 4、Subject:邮件主题
			message.setSubject("邮箱验证","UTF-8");
			// 5、Content:邮件正文(可以使用Html标签)
			message.setContent("邮箱验证","text/html;charset=UTF-8");
			// 6、设置发送时间
			message.setSentDate(new Date());
			// 7、保存设置
			message.saveChanges();
			// 8、将该邮件保存在本地
			OutputStream out = new FileOutputStream("D://MyEmail" + UUID.randomUUID().toString() + ".eml");
			message.writeTo(out);
			out.flush();
			out.close();
			return message;
		} 

三、发送邮件

//  javaMail邮件发送
	public static void main(String[] args) {
		try {
			// 1、创建参数配置,用于连接邮箱服务器的参数配置
			Properties props = new  Properties();
			//  开启debug调试
			props.setProperty("mail.debug", "true");
			// 发送服务器需要身份验证
			props.setProperty("mail.smtp.auth", "true");
			// 设置右键服务器的主机名
			props.setProperty("mail.host", emailSMTPHost);
			// 发送邮件协议名称
			props.setProperty("mail.transport.protocol", "smtp");
			// 2、根据配置创建会话对象,用于和邮件服务器交互
			Session session = Session.getInstance(props);
			//  设置debug,可以查看详细的发送log
			session.setDebug(true);
			//  3、创建一封邮件
			MimeMessage message = creatMimeMessage(session, emailAccount, receiveMailAccount, " ");
			//  4、根据session获取邮件传输对象
			Transport transport = session.getTransport();
			//  5、使用邮箱账号和密码连接邮箱服务器emailAccount必须与message中的发件人邮箱一致,否则报错
			transport.connect(emailAccount,emailPassword);
			//  6、发送邮件,发送所有收件人地址
			transport.sendMessage(message, message.getAllRecipients());
			//  7、关闭连接
			transport.close();
		} catch (UnsupportedEncodingException | MessagingException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

效果图展示:

JavaWeb实现qq邮箱验证(一)[通俗易懂]

JavaWeb实现qq邮箱验证(一)[通俗易懂]

到这里,通过java发送qq邮件就已经完成了。

这个只是java版本的,后面我会把这个封装起来,做成javaUtils,javaWeb项目可以直接使用。上面会涉及到发送邮箱的jar包,我放到下面的链接里。快去测试一下你的Demo。

邮箱注册进阶篇(封装成工具类):https://blog.csdn.net/BlackPlus28/article/details/85114001

JavaWeb实现qq邮箱验证(二):https://blog.csdn.net/BlackPlus28/article/details/85114001

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/147212.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea2021 激活码【中文破解版】

    (idea2021 激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~S32P…

    2022年3月26日
  • pycharm 使用 anaconda 环境[通俗易懂]

    pycharm 使用 anaconda 环境[通俗易懂]两个方法一:从annaconda内部打开pycharm这里有个下拉框可以选选择你要的anaconda环境再launch你的pycharm但有时候好像不大灵光还是用不上这个环境二:方法二就是万能方法从pycharm内部来配置环境,非常简单。界面最右上角齿轮图标,点击。找到interpreter这里下拉框可以选,发现没有anaconda的环境,你就showall然后点左上角加号选anaconda环境,再去添加你已经存在的anaconda环境。…

    2022年8月28日
  • zoj Plants vs. Zombies(2018icpc青岛)[通俗易懂]

    zoj Plants vs. Zombies(2018icpc青岛)[通俗易懂]24 83 2 6 63 910 10 164题解贪心+二分#include<bits/stdc++.h>using namespace std;typedef long long ll;const int N = 2e5 + 10;ll a[N],st[N]; int n,m;bool check(ll x){ memset(st,0,sizeof st); ll cnt = 0; for(int i = 1;i <= ..

    2022年8月9日
  • 做java开发的前景何在

    做java开发的前景何在做了几年的it研发工程师,到现在还从事coding,尤其我本身是女生,工作也有5年多了,一直从事coding,用过很多的开发语言,但是好像没有精通。所以找工作不知道该用哪种语言找,于是乎瞎碰,没有目标的乱碰。呵呵。曲折的工作经历,中间休息了两年没有开发,搞了半年的需求分析,后来由于不喜欢新的工作环境离职,现在又走上了老路coding,本身我觉得没有什么,但是在现在的公司里越来越觉得做研发尤其是…

    2022年7月14日
  • mongodb access control is not enabled for the database

    mongodb access control is not enabled for the databasemongodb access control is not enabled for the database

    2022年4月25日
  • 细说Spring——AOP详解(AOP概览)

    细说Spring——AOP详解(AOP概览)一、对AOP的初印象首先先给出一段比较专业的术语(来自百度):在软件业,AOP为AspectOrientedProgramming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而…

    2022年7月27日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号