邮箱验证
一、开启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() {@Overrideprotected PasswordAuthentication getPasswordAuthentication() {// 如我的邮箱 xxxxx@qq.comreturn 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,再跳转到注册成功/登录页面。
有待优化,加油!