java发送邮箱验证码
pom依赖导入
<!--发送邮件--> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-email</artifactId> <version>1.5</version> </dependency>
然后创建一个随机生成6位验证码的工具类
package com.orhe.user.utils; 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 com.orhe.user.utils; 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("83945709@qq.com", "839454709@qq.com"); // 如果需要认证信息的话,设置认证:用户名-密码。分别为发件人在邮件服务器上的注册名称和得到的授权码 email.setAuthentication("839454709@qq.com", "这里写你的授权码"); email.setSubject("注册验证码"); // 要发送的信息,由于使用了HtmlEmail,可以在邮件内容中使用HTML标签 email.setMsg("欢迎注册,您的验证码为:"+code+"\n@orhe.cn"); // 发送 email.send(); System.out.println ( "邮件发送成功!" ); } catch (EmailException e) { // TODO Auto-generated catch block e.printStackTrace(); System.out.println ( "邮件发送失败!" ); } } }