做用户注册模块,javaMail实现用户激活,本以为不怎么费力,结果在做的过程中遇到些问题,分享一下
~1javaMAil 发邮件需要导入两个包,mail.jar和activation.jar ,直接引入到lib下
~2邮件发送者必须开通POP3/IMAP/SMTP 服务(开始没注意这个问题,浪费一些时间)
~3个人使用的springmvc+mybatis SendMail 实现如下
package com.spring.util;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class SendMail {
/**
* @param args
* @throws Exception
*/
public static void sendEmail(String recEmail,String url) throws Exception {
Properties prop = new Properties();
prop.setProperty("mail.host", "smtp.qq.com");
prop.setProperty("mail.transport.protocol", "smtp");
prop.setProperty("mail.smtp.auth", "true");
//使用JavaMail发送邮件的5个步骤
//1、创建session
Session session = Session.getInstance(prop);
//开启Session的debug模式,这样就可以查看到程序发送Email的运行状态
session.setDebug(true);
//2、通过session得到transport对象
Transport ts = session.getTransport();
//3、使用邮箱的用户名和密码连上邮件服务器,发送邮件时,发件人需要提交邮箱的用户名和密码给smtp服务器,用户名和密码都通过验证之后才能够正常发送邮件给收件人。
ts.connect("smtp.qq.com", "邮箱账户", "邮箱密码");
//4、创建邮件
Message message = createSimpleMail(recEmail,url,session);
//5、发送邮件
ts.sendMessage(message, message.getAllRecipients());
ts.close();
}
public static MimeMessage createSimpleMail(String receiverEmail,String url,Session session)
throws Exception {
//创建邮件对象
MimeMessage message = new MimeMessage(session);
//指明邮件的发件人
message.setFrom(new InternetAddress("******@qq.com"));
//指明邮件的收件人,现在发件人和收件人是一样的,那就是自己给自己发
message.setRecipient(Message.RecipientType.TO, new InternetAddress(receiverEmail));
//邮件的标题
message.setSubject("邮件验证");
//邮件的文本内容
message.setContent("点击下面的地址完成激活"+"<br/>"+"<a href='"+url+"'>"+url+"</a>", "text/html;charset=UTF-8");
//返回创建好的邮件对象
return message;
}
}
~4用户注册,模块,个人思想是注册后先把基本信息存入数据库,设置state字段验证是否激活
/**
* 用户注册模块
* @param email
* @param password
* @param username
* @param model
* @return
*/
@RequestMapping(value="/reg",method=RequestMethod.POST)
public String reg(String email,String password,String username,Model model,HttpServletRequest request){
System.out.println("用户注册");
User u=new User(username,email,password);
//添加一个用户的基本信息,但是不进行激活
userService.addUserCommon(u);
//查找刚刚添加进去的用户的信息
User userInfo=userService.getUserByEmail(email);
//根据自己需要自行修改
String url="http://localhost:8080/cainiao/FinshReg?RegId=" + userInfo.getId();
/**
* 发送邮件
*/
SendMail send=new SendMail();
try {
send.sendEmail(email,url);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return "redirect:/user/regMailSendSuccess";
}
~5点击邮箱链接完成注册
/**
* 将用户信息激活,完成注册
* @return
*/
@RequestMapping(value="/FinshReg")
public String FinshReg(String RegId){
int regId=Integer.parseInt(RegId);
userService.updateRegUser(regId);
System.out.println("用户已经激活");
return "user/index";
}
附带所需jar包下载链接,,,希望多多支持
http://download.csdn.net/detail/stevejobson/9194385