spring roo 开发meavn项目(五)后台发送邮件功能

来源:互联网 发布:中国宠物市场数据分析 编辑:程序博客网 时间:2024/05/20 21:22

注意用于发送邮件的发件邮箱需要设置开启stmp服务


pom文件中增加引用包

<span style="white-space:pre"></span><dependency><groupId>javax.mail</groupId><artifactId>mail</artifactId><version>1.4.7</version></dependency>

邮件类

package com.collegepatent.util;import java.util.List; import java.util.Properties;  public class MailBean {     // 发送邮件的服务器的IP和端口         private String mailServerHost;        private String mailServerPort = "25";        // 邮件发送者的地址         private String fromAddress;        // 邮件接收者的地址         private List<String> toAddress;        // 登陆邮件发送服务器的用户名和密码         private String userName;        private String password;        // 是否需要身份验证         private boolean validate = false;        // 邮件主题         private String subject;        // 邮件的文本内容         private String content;        // 邮件附件的文件名         private List<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");           p.put("mail.mime.address.strict", "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 String getFromAddress() {         return fromAddress;     }     public void setFromAddress(String fromAddress) {         this.fromAddress = fromAddress;     }          public List<String> getToAddress() {         return toAddress;     }     public void setToAddress(List<String> toAddress) {         this.toAddress = toAddress;     }     public String getUserName() {         return userName;     }     public void setUserName(String userName) {         this.userName = userName;     }     public String getPassword() {         return password;     }     public void setPassword(String password) {         this.password = password;     }     public boolean isValidate() {         return validate;     }     public void setValidate(boolean validate) {         this.validate = validate;     }     public String getSubject() {         return subject;     }     public void setSubject(String subject) {         this.subject = subject;     }     public String getContent() {         return content;     }     public void setContent(String content) {         this.content = content;     }     public List<String> getAttachFileNames() {         return attachFileNames;     }     public void setAttachFileNames(List<String> attachFileNames) {         this.attachFileNames = attachFileNames;     }      } 

邮件验证类

package com.collegepatent.util;import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List;  import javax.mail.Authenticator; import javax.mail.PasswordAuthentication;  public class MailAuthenticator extends Authenticator{     String userName=null;       String password=null;               public MailAuthenticator(){       }       public MailAuthenticator(String username, String password) {            this.userName = username;            this.password = password;        }        protected PasswordAuthentication getPasswordAuthentication(){           return new PasswordAuthentication(userName, password);       }      } 
邮件操作类

package com.collegepatent.util;import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Properties;  import javax.activation.DataHandler; import javax.activation.FileDataSource; 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; import javax.mail.internet.MimeUtility;  public class MailOperate {     /**        * 以文本格式发送邮件        * @param mailInfo 待发送的邮件的信息        */            public boolean sendTextMail(MailBean mailInfo) {              // 判断是否需要身份认证               MailAuthenticator authenticator = null;              Properties pro = mailInfo.getProperties();             if (mailInfo.isValidate()) {              // 如果需要身份认证,则创建一个密码验证器                 authenticator = new MailAuthenticator(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);              // 创建邮件的接收者地址,并设置到邮件消息中               List<String> toAddress=null;           if(mailInfo.getToAddress().size()>1){               toAddress=mailInfo.getToAddress();               Address[] address =new InternetAddress[toAddress.size()];                  for (int i = 0; i < toAddress.size(); i++) {                      address[i]=new InternetAddress(toAddress.get(i));                 }               mailMessage.setRecipients(Message.RecipientType.TO,address);              }else{               toAddress=mailInfo.getToAddress();           Address to = new InternetAddress(toAddress.get(0));            // Message.RecipientType.TO属性表示接收者的类型为TO               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(MailBean mailInfo) throws UnsupportedEncodingException{              // 判断是否需要身份认证               MailAuthenticator authenticator = null;             Properties pro = mailInfo.getProperties();             //如果需要身份认证,则创建一个密码验证器                if (mailInfo.isValidate()) {                authenticator = new MailAuthenticator(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);              // 创建邮件的接收者地址,并设置到邮件消息中               List<String> toAddress=null;           if(mailInfo.getToAddress().size()>1){               toAddress=mailInfo.getToAddress();              Address[] address =new InternetAddress[toAddress.size()];              for (int i = 0; i < toAddress.size(); i++) {                  address[i]=new InternetAddress(toAddress.get(i));             }               mailMessage.setRecipients(Message.RecipientType.TO,address);              }else{               toAddress=mailInfo.getToAddress();           Address to = new InternetAddress(toAddress.get(0));            // 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);              if(mailInfo.getAttachFileNames()!=null){               List<String> attachFileNames = mailInfo.getAttachFileNames();               for (String path : attachFileNames) {                   html=new MimeBodyPart();                     FileDataSource fds=new FileDataSource(path); //得到数据源                      html.setDataHandler(new DataHandler(fds)); //得到附件本身并至入BodyPart                      //此处是为了解决附件中文名乱码的问题                      String fileName= MimeUtility.encodeText(fds.getName());                   html.setFileName(fileName);  //得到文件名同样至入BodyPart                      mainPart.addBodyPart(html);               }           }                      // 将MiniMultipart对象设置为邮件内容               mailMessage.setContent(mainPart);              // 发送邮件               Transport.send(mailMessage);              return true;              } catch (MessagingException ex) {                  ex.printStackTrace();              }              return false;            }                } 

发送邮件示例

 /**      * 发送邮件      *       * @author xc      */         @RequestMapping(method = RequestMethod.GET, value = "send", produces = "application/json")@ResponseBody    public Object send(){                //设置邮件             MailBean mailInfo = new MailBean();             mailInfo.setMailServerHost("smtp.sina.com");             mailInfo.setMailServerPort("25");             mailInfo.setValidate(true);           //发件人账户和密码         mailInfo.setUserName("******");             mailInfo.setPassword("*******");//您的邮箱密码              mailInfo.setFromAddress("*********");          //收件人地址         List<String> address = new ArrayList<String>();          address.add("8111974@qq.com");               mailInfo.setToAddress(address);             mailInfo.setSubject("专利申请");             mailInfo.setContent("邮件测试案例已经发到邮箱,请查收,项目中用到了两个jar包,用的时候一并导入即可");             List<String> attachFileNames = new ArrayList<String>();          //此处是你要得到的上传附件的文件路径           attachFileNames.add("\\test123.docx");          mailInfo.setAttachFileNames(attachFileNames);             //这个类主要来发送邮件             MailOperate sms = new MailOperate();                //sms.sendTextMail(mailInfo);//发送文体格式                  try {                  //采取html格式发送                  sms.sendHtmlMail(mailInfo);             } catch (UnsupportedEncodingException e) {                 // TODO Auto-generated catch block                  e.printStackTrace();             }//发送html格式        return true;    }  



0 0