struts、hibernate框架下实现javamail邮箱验证

     引入javamail.jar包,如果struts2框架已经加入,则要将java EE 5 library包降低为1.4的,不然可能会有冲突。

 

     main函数:

     DesUtil desUtil = new DesUtil();
     String passwd = desUtil.getEncPass(passWord);//加密
     String url = "http://localhost:8080/online/jsp/emailCheck.action?active=" + passwd + "&regEmail=" + regEmail;//加后缀是为了邮箱激活使用
           MessageSender messageSender = new MessageSender();
             // 指定使用SMTP协议来创建Session对象 
           Session session = messageSender.createSession("smtp");
          // 使用前面文章所完成的邮件创建类获得 Message 对象 
           MimeMessage mail;
     try {
          mail = new WithAttachmentMessage().createMessage(session, "924837275@qq.com" ,"924837275@qq.com", url);
          messageSender.sendMail(session, mail, "smtp.qq.com", "924837275@qq.com", "cwytm88121825"); 
        } catch (Exception e) {
             e.printStackTrace();
        }

   

     以上用到两个类:

     1、MessageSender 

public Session createSession(String protocol) { 
        Properties property = new Properties(); 
        property.setProperty("mail.transport.protocol", protocol); 
        property.setProperty("mail.smtp.auth", "true"); 
 
        Session session = Session.getInstance(property); 
         
        // 启动JavaMail调试功能,可以返回与SMTP服务器交互的命令信息 
        // 可以从控制台中看一下服务器的响应信息 
        session.setDebug(true);  
        return session; 
    } 
 
    /** 
     * 传入Session、MimeMessage对象,创建 Transport 对象发送邮件 
     */
    public void sendMail(Session session, MimeMessage msg, String smtpServer, String user, String pwd) throws Exception { 
         
        // 设置发件人使用的SMTP服务器、用户名、密码  


        // 由 Session 对象获得 Transport 对象 
        Transport transport = session.getTransport(); 
        // 发送用户名、密码连接到指定的 smtp 服务器 
        transport.connect(smtpServer, user, pwd);  
        transport.sendMessage(msg, msg.getRecipients(Message.RecipientType.TO)); 
        transport.close(); 
    }

 

     2、WithAttachmentMessage

 /**
  * 根据传入的文件路径创建附件并返回
  */
 public MimeBodyPart createAttachment(String fileName) throws Exception {
  MimeBodyPart attachmentPart = new MimeBodyPart();
  FileDataSource fds = new FileDataSource(fileName);
  attachmentPart.setDataHandler(new DataHandler(fds));
  attachmentPart.setFileName(fds.getName());
  return attachmentPart;
 }

 /**
  * 根据传入的邮件正文body和文件路径创建图文并茂的正文部分
  */
 public MimeBodyPart createContent(String body, String fileName)
   throws Exception {
  // 用于保存最终正文部分
  MimeBodyPart contentBody = new MimeBodyPart();
  // 用于组合文本和图片,"related"型的MimeMultipart对象
  MimeMultipart contentMulti = new MimeMultipart("related");

  // 正文的文本部分
  MimeBodyPart textBody = new MimeBodyPart();
  textBody.setContent(body, "text/html;charset=gbk");
  contentMulti.addBodyPart(textBody);

  // 正文的图片部分
  MimeBodyPart jpgBody = new MimeBodyPart();
  FileDataSource fds = new FileDataSource(fileName);
  jpgBody.setDataHandler(new DataHandler(fds));
  jpgBody.setContentID("logo_jpg");
  contentMulti.addBodyPart(jpgBody);

  // 将上面"related"型的 MimeMultipart 对象作为邮件的正文
  contentBody.setContent(contentMulti);
  return contentBody;
 }

 /**
  * 根据传入的 Seesion 对象创建混合型的 MIME消息
  */
 public MimeMessage createMessage(Session session, String from, String to, String url) throws Exception {

  String subject = "欢迎注册铛铛在线项目管理平台";
  String body = "<h4>点击超链接</h4><br>"
    + "<a href = " + url + ">" + url + "</a><br>"
    + "<h4>完成注册</h4>";

  MimeMessage msg = new MimeMessage(session);
  msg.setFrom(new InternetAddress(from));
  msg.setRecipient(Message.RecipientType.TO, new InternetAddress(to));
  msg.setSubject(subject);

  // 创建邮件的各个 MimeBodyPart 部分
  MimeBodyPart attachment01 = createAttachment("d:\\ww.docx");
  MimeBodyPart attachment02 = createAttachment("d:\\www.docx");
  MimeBodyPart content = createContent(body, "d:\\ww.docx");

  // 将邮件中各个部分组合到一个"mixed"型的 MimeMultipart 对象
  MimeMultipart allPart = new MimeMultipart("mixed");
  allPart.addBodyPart(attachment01);
  allPart.addBodyPart(attachment02);
  allPart.addBodyPart(content);

  // 将上面混合型的 MimeMultipart 对象作为邮件内容并保存
  msg.setContent(allPart);
  msg.saveChanges();
  return msg;
 }

 

  邮件内容包含很全面,但是你也可以选择自己所需的。

  当你激活邮箱里的超链接的时候,回传的参数,从而控制邮箱填入是否正确是否有激活,只有激活后,才承认注册成功,能过登录

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值