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分钟左右你在发送就好了
代码千万行,注释第一行;
格式不规范,报错两行泪!