Java实现邮箱验证
在平时开发的时候,难免会需要用到Email验证,Java强大的网络支持能力肯定是为我们提供了相应的Api使用的,相关包为javax.mail.*;只是在JDK中并没有集成相应jar包,需要我们单独下载。可以在Oracle官网找到指向GitHub开源项目的链接,为方便下载,这里直接给出链接:点此跳转

邮箱设置
这里以QQ邮箱为例。先登录QQ邮箱,然后点击 设置》账户》POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务。如下图:
文章正文图片

然后选择开启IMAP/SMTP服务,之后系统会提供一个授权码,记录下该授权码。然后查看相关系统配置,包括服务器地址,SSL安全加密端口。如下图:
文章正文图片

Java代码组织
在写代码之前,需要注意以下几点:
(1)有些邮箱验证较为严格,需要配置SSL安全加密,比如QQ邮箱。
(2)在配置的时候需要根据不同的邮箱选择是设置授权码还是登录密码(据测试,QQ邮箱必须用授权码,网易163邮箱可以选择开启或关闭授权码)


下面给出参考代码(只需将相关配置改为自己的相关信息就能进行邮件发送):
package org.devsong.util;

import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import java.util.Properties;

public class JavaEmailUtil {

    private String sender;
    private String receiver;

    public JavaEmailUtil(String sender, String receiver) {
        this.sender = sender;
        this.receiver = receiver;
    }

    public boolean sendMsg(String content){

        String myEmailPassword = "xxxxxxxx"; //注:QQ邮箱需要 授权码 而非 密码, 网易邮箱可以设置用密码还是授权码

        //新建配置文件
        Properties prop = new Properties();
        //设置发送协议为SMTP
        prop.setProperty("mail.transport.protocol", "smtp");
        //设置发送服务器地址
        prop.setProperty("mail.smtp.host", "smtp.qq.com");
        //设置需要验证,即需提供密码(QQ邮箱需要 授权码 而非 密码, 网易邮箱可以设置用密码还是授权码)
        prop.setProperty("mail.smtp.auth", "true");
        //设置SSL安全连接相关的类,QQ邮箱经测试必须开启
        prop.setProperty("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
        //设置服务器端口(官方设置页有提供,QQ邮箱截至8月27日为465或者587)
        prop.setProperty("mail.smtp.port", "465");
        prop.setProperty("mail.smtp.socketFactory.port", "465");

        //获取符合配置的Session实例
        Session session = Session.getDefaultInstance(prop);
        //开启Debug模式以便调试,成功后可去除
        //session.setDebug(true);

        try {
            //获取消息对象,获取发送实例,连接、发送、关闭发送实例
            MimeMessage message = createMessage(session, content);
            Transport transport = session.getTransport();
            transport.connect(sender, myEmailPassword);
            transport.sendMessage(message, message.getAllRecipients());
            transport.close();
            return true;
        } catch (UnsupportedEncodingException | MessagingException e) {
            e.printStackTrace();
            return false;
        }
    }

    private MimeMessage createMessage(Session session, String content) throws UnsupportedEncodingException, MessagingException {
        MimeMessage message = new MimeMessage(session);
        //设置发件人, internetAddress参数:Email地址,昵称(随意),编码
        message.setFrom(new InternetAddress(sender, "DevSong", "utf-8"));
        //设置收件人,参数:
        message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(receiver, "用户", "utf-8"));
        //设置邮件标题
        message.setSubject("邮箱验证", "utf-8");
        //设置邮件内容
        message.setContent(content,"text/html;charset=UTF-8");
        //设置发件时间
        message.setSentDate(new Date());
        //保存更改
        message.saveChanges();

        return message;
    }

    public String getSender() {
        return sender;
    }

    public void setSender(String sender) {
        this.sender = sender;
    }

    public String getReceiver() {
        return receiver;
    }

    public void setReceiver(String receiver) {
        this.receiver = receiver;
    }

}
It's
欢迎访问本站,欢迎留言、分享、点赞。愿您阅读愉快!
*转载请注明出处,严禁非法转载。
https://www.devsong.org
QQ留言 邮箱留言
头像
引用:
取消回复
提交
涂鸦
涂鸦
热门