一、导入依赖
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.5</version>
</dependency>
二、生成随机验证码
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 ( "邮件发送失败!" );
}
}
}