java实现qq邮箱发送验证码
qq邮箱设置
-
登录之后点击设置
-
点击账户设置
-
往下翻到开启服务(成功之后有个授权码)
需要3个jar包 activation.jar、mail.jar、commons-email.jar
<!-- https://mvnrepository.com/artifact/javax.activation/activation -->
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.mail/mail -->
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-email -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId>
<version>1.4</version>
</dependency>
实现代码
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class testEmail {
public static void main(String[] args) {
sendAuthCodeEmail("接收的邮箱", new testEmail().achieveCode());
}
// 随机验证码
public String achieveCode() { //由于数字 1 、 0 和字母 O 、l 有时分不清楚,所以,没有数字 1 、 0
String[] beforeShuffle= new String[] { "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F",
"G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a",
"b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v",
"w", "x", "y", "z" };
List list = Arrays.asList(beforeShuffle);//将数组转换为集合
Collections.shuffle(list); //打乱集合顺序
StringBuilder sb = new StringBuilder();
for (int i = 0; i < list.size(); i++) {
sb.append(list.get(i)); //将集合转化为字符串
}
return sb.toString().substring(3, 8);
}
//发送邮件代码
public static void sendAuthCodeEmail(String email, String authCode) {
try {
SimpleEmail mail = new SimpleEmail();
mail.setHostName("smtp.qq.com");//发送邮件的服务器
mail.setAuthentication("授权码的邮箱","授权码");//刚刚记录的授权码,是开启SMTP的密码
mail.setFrom("授权码的邮箱","XX科技有限公司"); //发送邮件的邮箱和发件人
mail.setSSLOnConnect(true); //使用安全链接
mail.addTo(email);//接收的邮箱
//System.out.println("email"+email);
mail.setSubject("注册验证码");//设置邮件的主题
mail.setMsg("尊敬的用户:你好!\n" + " 注册验证码为:" + authCode +"(有效期为一分钟,请勿告知他人)");//设置邮件的内容
mail.send();//发送
} catch (EmailException e) {
e.printStackTrace();
}
}
}