邮箱验证码

Posted yizhixiang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了邮箱验证码相关的知识,希望对你有一定的参考价值。

一、导入依赖

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

二、生成随机验证码

package email_test.util;
import java.util.Random;

public class VerifyCodeUtil {
    //验证码生成范围
    //public static final String VERIFY_CODES = "23456789ABCDEFGHJKLMNPQRSTUVWXYZ";
    public static final String VERIFY_CODES = "0123456789";

    /**
     * 使用系统默认字符源生成验证码
     * @param verifySize 验证码长度
     * @return
     */
    public static String generateVerifyCode(int verifySize){
        return generateVerifyCode(verifySize, VERIFY_CODES);
    }

    /**
     * 使用指定源生成验证码
     * @param verifySize 验证码长度
     * @param sources 验证码字符源
     * @return
     */
    public static String generateVerifyCode(int verifySize, String sources){
        if(sources == null || sources.length() == 0){
            sources = VERIFY_CODES;
        }
        int codesLen = sources.length();
        Random rand = new Random(System.currentTimeMillis());
        StringBuilder verifyCode = new StringBuilder(verifySize);
        for(int i = 0; i < verifySize; i++){
            verifyCode.append(sources.charAt(rand.nextInt(codesLen - 1)));
        }
        return verifyCode.toString();}

}

三、发送验证码

package email_test.util;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.htmlEmail;

/**
 * 邮件工具类
 */
public class MailUtil {
    //邮箱验证码
    public static void sendEmail(String emailaddress,String code){
        // 不要使用SimpleEmail,会出现乱码问题
        HtmlEmail email = new HtmlEmail();
        try {
            // 这里是SMTP发送服务器的名字:,普通qq号只能是smtp.qq.com ;
            email.setHostName("smtp.qq.com");
            //设置需要鉴权端口
            email.setSmtpPort(465);
            //开启 SSL 加密
            email.setSSLOnConnect(true);
            // 字符编码集的设置
            email.setCharset("utf-8");
            // 收件人的邮箱
            email.addTo(emailaddress);
            // 发送人的邮箱
            email.setFrom("1719900603@qq.com", "旅游网");
            // 如果需要认证信息的话,设置认证:用户名-密码。分别为发件人在邮件服务器上的注册名称和得到的授权码
            email.setAuthentication("1719900603@qq.com", "填自己的授权码");
            email.setSubject("注册验证码");
            // 要发送的信息,由于使用了HtmlEmail,可以在邮件内容中使用HTML标签
            email.setMsg("欢迎注册,您的验证码为:"+code);
            // 发送
            email.send();

            System.out.println ( "邮件发送成功!" );
        } catch (EmailException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            System.out.println ( "邮件发送失败!" );
        }
    }
}

以上是关于邮箱验证码的主要内容,如果未能解决你的问题,请参考以下文章

java实现邮件发送验证码

QQ邮箱验证码

C# “用户注册“板块开发 发送邮箱验证码

C# “用户注册“板块开发 发送邮箱验证码

qq邮箱为啥邮件发送失败重新发送验证码

Java实现邮箱发送验证码