下载javax.mail.jar导入项目

//以下是action代码
/**
      * 注册第一步,保存用户名和密码
      * @return
      */
     @SuppressWarnings("unchecked")
     public String register(){
         userInfo.setTradersPassword(userInfo.getLoginPassword());
         session.put("REGISTER_USER",userInfo);
         return "verify";
     }

     /**
      * 注册第二步,发送验证邮件
      * @return
      */
     public String sendEmail(){
         if(null!=session.get("REGISTER_USER")){
             UUserInfo user =  (UUserInfo) session.get("REGISTER_USER");
             user.setLoginPassword(MD5.encode(user.getLoginPassword()));
             user.setTradersPassword(MD5.encode(user.getTradersPassword()));
             user.setEmail(userInfo.getEmail());
             user.setArticlesCount(0L);
             user.setEmailAuth(0L);
             user.setPhoneAuth(0L);
             user.setRegDate(new Date());
             user.setIsLock(1L);
             session.put("REGISTER_USER", user);
             
             //获取是第一次发还是重发邮件 0:第一次 1:更换邮箱发送
             String active = request.getParameter("active");
             
             boolean sendSuccess = sendHtmlEmail(user);
             if(sendSuccess && "0".equals(active)){//发送成功并且是第一次发送验证邮件,添加用户信息
                 userInfoBiz.addUser(user);
             }else if(sendSuccess && "1".equals(active)) {//更换邮箱发送成功,修改用户邮箱
                 UUserInfo userInfo = userInfoBiz.getUserInfoByUserName(user.getUserName());
                 if(userInfo!=null)
                     userInfo.setEmail(user.getEmail());
                 else
                     userInfo = user;
                 userInfoBiz.modifyUserInfo(userInfo);
             }
         }
         session.put("email",userInfo.getEmail());
         return "sendEmail";
     }
     
     /**
      * 重新发送验证邮件
      */
     @SuppressWarnings("unchecked")
     public void sendEmailAgain(){
         UUserInfo user =  (UUserInfo) session.get("REGISTER_USER");
         int sendCount = session.get("sendCount")==null?0:Integer.valueOf(session.get("sendCount").toString());
         if(null!=user){
             if(null!=session.get("REGISTER_USER")){
                 if(sendHtmlEmail(user)){
                     sendCount = sendCount+1;
                     session.put("sendCount",sendCount);
                 }else {
                     sendCount = -1;
                 }
             }
         }else {
             sendCount = -1;
         }
         getWriter().print(sendCount);
         closeOut();
     }
     
     /**
      * 激活邮箱
      * @return
      */
     public String verifyEmail(){
         String email = request.getParameter("ID");
         int verifyInfo = 0;
         if(null!=email){
             email = Encryption.decrypt(email);
             UUserInfo userInfo = userInfoBiz.getUserInfoByEmail(email);
             if(null!=userInfo){//改用户邮箱修改为已激活
                 if(userInfo.getEmailAuth().intValue() ==0){
                     userInfo.setEmailAuth(1L);
                     userInfo.setIsLock(0L);
                     userInfoBiz.modifyUserInfo(userInfo);
                     session.put("USER_INFO",userInfo);
                     verifyInfo = 1;
                 }else {
                     verifyInfo = 2;
                 }
             }else {
                 verifyInfo =-1;
             }
         }
         session.put("verifyInfo",verifyInfo);
         return "verifyEmail";
     }


Java 邮箱账号连接 javaweb邮箱验证码_java


//一下方法中的systemInfo中保存了后台配置的一些参数
     /**
      * 发送邮件
      * @return
      */
     public boolean sendHtmlEmail(UUserInfo user){
         //获取系统信息
         systemInfo = systemBiz.getSystemInfo();
         boolean flag=false;
         if(systemInfo!=null && systemInfo.getMailAddress()!=null){
             //发送验证邮件
             MailSenderInfo mailInfo = new MailSenderInfo();
             mailInfo.setMailServerHost(systemInfo.getMailSmtpIp()); // "smtp.qq.com"
             mailInfo.setMailServerPort("25");
             mailInfo.setValidate(true);
             mailInfo.setUserName(systemInfo.getMailAddress().split("@")[0]);//(mail_address.split("@")[0]); // "863406563"
             mailInfo.setPassword(Encryption.decrypt(systemInfo.getMailPassword()));// 您的邮箱密码
             mailInfo.setFromAddress(systemInfo.getMailAddress()); // 发送人
             mailInfo.setToAddress(user.getEmail()); //接收人
             mailInfo.setSubject(systemInfo.getMailSenderName()+"用户邮箱验证!");
             
             //生成激活链接
             String Uip = request.getServerName();
             String path = request.getScheme() + "://" + Uip + ":"
             + request.getServerPort() + request.getContextPath()
             + "/webUserInfoAction_verifyEmail.do?ID="+Encryption.encrypt(user.getEmail());
             
             String mailContent = "  亲爱的"+systemInfo.getMailSenderName()+"用户 <span style=\"color:red\"> "
                 + user.getUserName()
                 + "</span> ,您好!<p>  感谢您注册"+systemInfo.getMailSenderName()+",请确认您的邮箱帐号为 <span style=\"font-weight: bold\">"
                 + user.getEmail()
                 + " </span> </p><p>  请点击下面的链接即可完成激活。</p><p>  "
                 + path
                 + "</p><p>  (如果链接无法点击,请将它拷贝到浏览器的地址栏中)"
                 + "</p><p>  "+systemInfo.getMailSenderName()+",您的互联网理财新渠道!</p><p> </p><p>  此为自动发送邮件,请勿直接回复!</p>";
             mailInfo.setContent(mailContent);
             mailInfo.setNickname(systemInfo.getMailSenderName());
             
             try {
                 flag=MailSender.sendHtmlMail(mailInfo);
             } catch (Exception e) {
                 e.printStackTrace();
             }
         }
         return flag;
     }

新建一个实体类MailSenderInfo

import java.util.Properties;

 public class MailSenderInfo {    
     // 发送邮件的服务器的IP和端口    
     private String mailServerHost;    
     private String mailServerPort;    
     // 邮件发送者的地址    
     private String fromAddress;    
     // 邮件接收者的地址    
     private String toAddress;    
     // 登陆邮件发送服务器的用户名和密码    
     private String userName;    
     private String password;
     // 发送者昵称
     private String nickname;
     // 是否需要身份验证    
     private boolean validate = false;    
     // 邮件主题    
     private String subject;    
     // 邮件的文本内容    
     private String content;    
     // 邮件附件的文件名    
     private String[] attachFileNames;      
     /** *//**   
       * 获得邮件会话属性   
       */    
     public Properties getProperties(){    
       Properties p = new Properties();    
       p.put("mail.smtp.host", this.mailServerHost);    
       p.put("mail.smtp.port", this.mailServerPort);    
       p.put("mail.smtp.auth", validate ? "true" : "false");    
       return p;    
     }    
     public String getMailServerHost() {    
       return mailServerHost;    
     }    
     public void setMailServerHost(String mailServerHost) {    
       this.mailServerHost = mailServerHost;    
     }   
     public String getMailServerPort() {    
       return mailServerPort;    
     }   
     public void setMailServerPort(String mailServerPort) {    
       this.mailServerPort = mailServerPort;    
     }   
     public boolean isValidate() {    
       return validate;    
     }   
     public void setValidate(boolean validate) {    
       this.validate = validate;    
     }   
     public String[] getAttachFileNames() {    
       return attachFileNames;    
     }   
     public void setAttachFileNames(String[] fileNames) {    
       this.attachFileNames = fileNames;    
     }   
     public String getFromAddress() {    
       return fromAddress;    
     }    
     public void setFromAddress(String fromAddress) {    
       this.fromAddress = fromAddress;    
     }   
     public String getPassword() {    
       return password;    
     }   
     public void setPassword(String password) {    
       this.password = password;    
     }   
     public String getToAddress() {    
       return toAddress;    
     }    
     public void setToAddress(String toAddress) {    
       this.toAddress = toAddress;    
     }    
     public String getUserName() {    
       return userName;    
     }   
     public void setUserName(String userName) {    
       this.userName = userName;    
     }   
     public String getSubject() {    
       return subject;    
     }   
     public void setSubject(String subject) {    
       this.subject = subject;    
     }   
     public String getContent() {    
       return content;    
     }   
     public void setContent(String textContent) {    
       this.content = textContent;    
     }
     public String getNickname() {
         return nickname;
     }
     public void setNickname(String nickname) {
         this.nickname = nickname;
     } 
     
 }   

//新建类MailSender

 import java.io.UnsupportedEncodingException;
 import java.util.Date;
 import java.util.Properties;

 import javax.mail.Address;
 import javax.mail.BodyPart;
 import javax.mail.Message;
 import javax.mail.MessagingException;
 import javax.mail.Multipart;
 import javax.mail.Session;
 import javax.mail.Transport;
 import javax.mail.internet.InternetAddress;
 import javax.mail.internet.MimeBodyPart;
 import javax.mail.internet.MimeMessage;
 import javax.mail.internet.MimeMultipart;

 public class MailSender {
     
     /** 
       * 以文本格式发送邮件   
       * @param mailInfo 待发送的邮件的信息   
       */ 
      public boolean sendTextMail(MailSenderInfo mailInfo) {    
           // 判断是否需要身份认证    
           MyAuthenticator authenticator = null;    
           Properties pro = mailInfo.getProperties();   
           if (mailInfo.isValidate()) {    
           // 如果需要身份认证,则创建一个密码验证器    
             authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());    
           }   
           // 根据邮件会话属性和密码验证器构造一个发送邮件的session    
           Session sendMailSession = Session.getDefaultInstance(pro,authenticator);    
           try {    
           // 根据session创建一个邮件消息    
           Message mailMessage = new MimeMessage(sendMailSession);    
           // 创建邮件发送者地址    
           Address from = new InternetAddress(mailInfo.getFromAddress());    
           // 设置邮件消息的发送者    
           mailMessage.setFrom(from);    
           // 创建邮件的接收者地址,并设置到邮件消息中    
           Address to = new InternetAddress(mailInfo.getToAddress());    
           mailMessage.setRecipient(Message.RecipientType.TO,to);    
           // 设置邮件消息的主题    
           mailMessage.setSubject(mailInfo.getSubject());    
           // 设置邮件消息发送的时间    
           mailMessage.setSentDate(new Date());    
           // 设置邮件消息的主要内容    
           String mailContent = mailInfo.getContent();    
           mailMessage.setText(mailContent);    
           // 发送邮件    
           Transport.send(mailMessage);   
           return true;    
           } catch (MessagingException ex) {    
               ex.printStackTrace();    
           }    
           return false;    
         } 
      
      
      /** *//**   
       * 以HTML格式发送邮件   
       * @param mailInfo 待发送的邮件信息   
      * @throws UnsupportedEncodingException 
       */    
     public static boolean sendHtmlMail(MailSenderInfo mailInfo) throws UnsupportedEncodingException{    
       // 判断是否需要身份认证    
       MyAuthenticator authenticator = null;   
       Properties pro = mailInfo.getProperties();   
       //如果需要身份认证,则创建一个密码验证器     
       if (mailInfo.isValidate()) {    
         authenticator = new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());   
       }    
       // 根据邮件会话属性和密码验证器构造一个发送邮件的session    
       Session sendMailSession = Session.getDefaultInstance(pro,authenticator);    
       try {    
       // 根据session创建一个邮件消息    
       Message mailMessage = new MimeMessage(sendMailSession);   
       //MimeMessage mailMessage=new MimeMessage(sendMailSession); 
       // 创建邮件发送者地址    
       Address from =new InternetAddress(mailInfo.getFromAddress(),mailInfo.getNickname());
       // 设置邮件消息的发送者    
       mailMessage.setFrom(from);    
       // 创建邮件的接收者地址,并设置到邮件消息中    
       Address to = new InternetAddress(mailInfo.getToAddress());    
       // Message.RecipientType.TO属性表示接收者的类型为TO    
       mailMessage.setRecipient(Message.RecipientType.TO,to);    
       // 设置邮件消息的主题    
       mailMessage.setSubject(mailInfo.getSubject());    
       // 设置邮件消息发送的时间    
       mailMessage.setSentDate(new Date());    
       // MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象    
       Multipart mainPart = new MimeMultipart();    
       // 创建一个包含HTML内容的MimeBodyPart    
       BodyPart html = new MimeBodyPart();    
       // 设置HTML内容    
       html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");    
       mainPart.addBodyPart(html);    
       // 将MiniMultipart对象设置为邮件内容    
       mailMessage.setContent(mainPart);    
       // 发送邮件    
       Transport.send(mailMessage);    
       return true;    
       } catch (MessagingException ex) {    
           ex.printStackTrace();    
       }    
       return false;    
     }    
 }