javaMail发送邮件激活注册用户

来源:互联网 发布:电池校准软件 编辑:程序博客网 时间:2024/04/30 00:16
做用户注册模块,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 blocke.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

2 0