java发送QQ邮件实现注册验证功能

java发送QQ邮件实现注册验证功能

这几天在做项目时,遇到登录注册的模块由于条件限制,没法使用手机验证方式,所以想到了qq邮箱的验证。在登录注册时使用邮箱进行验证登录

下面开始代码

先来pom

 <dependency >
      <groupId >com.sun.mail </groupId >
      <artifactId >javax.mail </artifactId >
      <version >1.5.4 </version >
    </dependency >
package com.zz;

import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;

public class SendMail {

    public static void main(String[] args) {
        System.out.println("执行了1");
        SendMail SendMail = new SendMail();
        SendMail.SendMail2("**********@qq.com"); //要发送的邮箱
    }


    public static void SendMail2(String recipient) {
        //做链接前的准备工作  也就是参数初始化
        Properties properties = new Properties();
        properties.setProperty("mail.smtp.host", "smtp.qq.com");//发送邮箱服务器
        properties.setProperty("mail.smtp.port", "465");//发送端口
        properties.setProperty("mail.smtp.auth", "true");//是否开启权限控制
        properties.setProperty("mail.debug", "true");//true 打印信息到控制台
        properties.setProperty("mail.transport", "smtp");//发送的协议是简单的邮件传输协议
        properties.setProperty("mail.smtp.ssl.enable", "true");
        //建立两点之间的链接
        System.out.println("执行了2");
        Session session = Session.getInstance(properties, new Authenticator() {
            @Override
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication("**********@qq.com", "*********"); 
                 //这里第一个参数是发件人邮箱号码,第二个是邮箱的验证码下面解释
            }
        });
        System.out.println("执行了3");
        //创建邮件对象
        Message message = new MimeMessage(session);    
        try {
         //设置发件人
            message.setFrom(new InternetAddress("**********@qq.com"));		
            //设置收件人
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(recipient));//收件人
            //设置主题
            message.setSubject("验证码");
            //设置邮件正文  第二个参数是邮件发送的类型
            message.setContent("我比你牛逼,我是java发送的", "text/html;charset=UTF-8");
            //发送一封邮件
            Transport transport = session.getTransport();
            transport.connect("********@qq.com", "********");
            //这里两个参数是发件人 qq账号和密码
            Transport.send(message);
            System.out.println("执行了");
        } catch (MessagingException e) {
            e.printStackTrace();
        } finally {
        }
    }
}

代码都有注释,要注意点就是那个邮箱验证码
需要在自己的邮箱开启才可以用
在这里插入图片描述将它开启
在这里插入图片描述

开启后会发送一个授权码过来(这个就是代码中提到的验证码了,使用它才可以登录发送)

在这里插入图片描述
关于即使填了授权码也报535错误的原因可能是网络问题,可能是短时间内你发送了大量的邮件 导致的 所以过5分钟左右你在发送就好了

代码千万行,注释第一行;
格式不规范,报错两行泪!

发布了51 篇原创文章 · 获赞 172 · 访问量 2858

猜你喜欢

转载自blog.csdn.net/weixin_45519387/article/details/104710087
今日推荐