邮箱验证
一、开启POP3/SMTP服务
QQ邮箱、网易163邮箱均可。这里以网易163邮箱为例
1、注册163邮箱帐号,进入设置
1、进入设置的POP3/SMTP/IMAP选项
2、开启两个服务,IMAP/SMTP、POP3/SMTP服务。会有一系列验证,最后会给一个授权码,保存好,代码里需要用到。
2、java里的配置
我们需要用到的jar包是java.mail。这里需要一个MailUtils工具类,里面有些东西需要修改,配置
com.xxx.util.MailUtils
package com.qhx.util;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
public class MailUtils {
public static void sendMail(String email) throws Exception{
// 1、创建一个程序与邮件服务器会话对象 Session
// 创建参数配置,用于连接邮件服务器的参数配置
Properties prop = new Properties(); // 参数配置
prop.setProperty("mail.transport.protocol","SMTP"); // 使用协议,JavaMail规范要求
prop.setProperty("mail.host","smtp.163.com"); // 发件人邮箱的SMTP服务器地址
prop.setProperty("mail.smtp.auth","true"); // 请求认证,参数名称与具体实现有关,指定验证为true
// 创建验证器 输入授权码,不是密码
Authenticator auth = new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
// 如我的邮箱 xxxxx@qq.com
return new PasswordAuthentication("发件人的邮箱名","对应的授权码");
}
};
Session session = Session.getInstance(prop,auth);
// 2、创建一个Message,它相当于邮件内容
Message message = new MimeMessage(session);
// 这里要和上面对应,否则报错
message.setFrom(new InternetAddress("发件人的邮箱名"));
message.setRecipient(Message.RecipientType.TO,new InternetAddress(email)); // 设置发送方式和接收者
// 设置邮件主题
message.setSubject("邮件主题");
// 设置邮件正文 emailMsg内容就是邮件的内容
String emailMsg = "这是一封激活邮件,请<a href='http://localhost:8080/Dangdang/user/emailActive.do?userEmail="+email+"'>点击</a>该链接激活账户";
message.setContent(emailMsg,"text/html;charset=utf-8");
// 3、创建Transport用于将邮件发送
Transport.send(message);
}
}
参数配置
3、邮箱验证思路
填写完注册表单后,就执行注册方法,只不过用户表属性为userState,代表用户的激活状态(0未激活,1激活)。
表单填写后,发送邮件(调用MailUtils的sendMail方法)。发送的邮件正文中有超链接,用户点击超链接,跳转到激活用户状态的(0–>1)的controller,再跳转到注册成功/登录页面。
endMail方法)。发送的邮件正文中有超链接,用户点击超链接,跳转到激活用户状态的(0–>1)的controller,再跳转到注册成功/登录页面。
有待优化,加油!