• 用MailUtils发送邮件


    MailUtils,作用是发邮件.底层依赖的是javamail:mail.jar,activation.jars
    前提:需要导入封装好的包。最好将信息配置成一个mail信息的配置文件,增加保密性。
       
     1  @Test
     2     public void fun() throws MessagingException, IOException
     3     {
     4         /**
     5          * 1. 登陆右键服务器
     6          *    MailUtils.createSession(服务器地址,登录名,密码)//密码是各户端授权密码
     7          * 2.创建邮件对象
     8          *    发件人
     9          *    收件人
    10          *    主题
    11          *    正文
    12          * 3.发邮件
    13          *    需要第一步得到的session、和第二步得到的右键对象
    14          */
    15         Session session =MailUtils.createSession("smtp.163.com", "******", "******");
    16         Mail mail=new Mail("******@163.com", "******@qq.com", "测试邮件一封", "<a href='http://www.baidu.com'>百度</a>");
    17         MailUtils.send(session, mail);
    18     }

    Mail类代码:

      1 /**
      2  * 表示邮件类,你需要设置:账户名和密码、收件人、抄送(可选)、暗送(可选)、主题、内容,以及附件(可选)
      3  * 
      4  * 在创建了Mail对象之后
      5  * 可以调用它的setSubject()、setContent(),设置主题和正文
      6  * 也可以调用setFrom()和 addToAddress(),设置发件人,和添加收件人。
      7  * 也可以调用addAttch()添加附件
      8  * 创建AttachBean:new AttachBean(new File("..."), "fileName");
      9  */
     10 public class Mail {
     11     private String from;//发件人
     12     private StringBuilder toAddress = new StringBuilder();//收件人
     13     private StringBuilder ccAddress = new StringBuilder();//抄送
     14     private StringBuilder bccAddress = new StringBuilder();//暗送
     15     
     16     private String subject;//主题
     17     private String content;//正文
     18     
     19     // 附件列表
     20     private List<AttachBean> attachList = new ArrayList<AttachBean>();
     21     
     22     public Mail() {}
     23     
     24     public Mail(String from, String to) {
     25         this(from, to, null, null);
     26     }
     27     
     28     public Mail(String from, String to, String subject, String content) {
     29         this.from = from;
     30         this.toAddress.append(to);
     31         this.subject = subject;
     32         this.content = content;
     33     }
     34     
     35     /**
     36      * 返回发件人
     37      */
     38     public void setFrom(String from) {
     39         this.from = from;
     40     }
     41     
     42     /**
     43      * 返回发件人
     44      */
     45     public String getFrom() {
     46         return from;
     47     }
     48     
     49     /**
     50      * 返回主题
     51      */
     52     public String getSubject() {
     53         return subject;
     54     }
     55 
     56     /**
     57      * 设置主题
     58      */
     59     public void setSubject(String subject) {
     60         this.subject = subject;
     61     }
     62 
     63     /**
     64      * 获取主题内容
     65      */
     66     public String getContent() {
     67         return content;
     68     }
     69 
     70     /**
     71      * 设置主题内容
     72      */
     73     public void setContent(String content) {
     74         this.content = content;
     75     }
     76 
     77     /**
     78      * 获取收件人
     79      */
     80     public String getToAddress() {
     81         return toAddress.toString();
     82     }
     83 
     84     /**
     85      * 获取抄送
     86      */
     87     public String getCcAddress() {
     88         return ccAddress.toString();
     89     }
     90 
     91     /**
     92      * 获取暗送
     93      */
     94     public String getBccAddress() {
     95         return bccAddress.toString();
     96     }
     97 
     98     /**
     99      * 添加收件人,可以是多个收件人
    100      */
    101     public void addToAddress(String to) {
    102         if(this.toAddress.length() > 0) {
    103             this.toAddress.append(",");
    104         }
    105         this.toAddress.append(to);
    106     }
    107 
    108     /**
    109      * 添加抄送人,可以是多个抄送人
    110      */
    111     public void addCcAddress(String cc) {
    112         if(this.ccAddress.length() > 0) {
    113             this.ccAddress.append(",");
    114         }
    115         this.ccAddress.append(cc);
    116     }
    117 
    118     /**
    119      * 添加暗送人,可以是多个暗送人
    120      */
    121     public void addBccAddress(String bcc) {
    122         if(this.bccAddress.length() > 0) {
    123             this.bccAddress.append(",");
    124         }
    125         this.bccAddress.append(bcc);
    126     }
    127     
    128     /**
    129      * 添加附件,可以添加多个附件
    130      */
    131     public void addAttach(AttachBean attachBean) {
    132         this.attachList.add(attachBean);
    133     }
    134     
    135     /**
    136      * 获取所有附件
    137      */
    138     public List<AttachBean> getAttachs() {
    139         return this.attachList;
    140     }
    141 }

    MailUtil邮件工具类:

     1 /*
     2  * 发送邮件
     3  */
     4 public class MailUtils {
     5     public static Session createSession(String host, final String username, final String password) {
     6         Properties prop = new Properties();
     7         prop.setProperty("mail.host", host);// 指定主机
     8         prop.setProperty("mail.smtp.auth", "true");// 指定验证为true
     9 
    10         // 创建验证器
    11         Authenticator auth = new Authenticator() {
    12             public PasswordAuthentication getPasswordAuthentication() {
    13                 return new PasswordAuthentication(username, password);
    14             }
    15         };
    16         
    17         // 获取session对象
    18         return Session.getInstance(prop, auth);
    19     }
    20     
    21     /**
    22      * 发送指定的邮件
    23      * 
    24      * @param mail
    25      */
    26     public static void send(Session session, final Mail mail) throws MessagingException,
    27             IOException {
    28 
    29         MimeMessage msg = new MimeMessage(session);// 创建邮件对象
    30         msg.setFrom(new InternetAddress(mail.getFrom()));// 设置发件人
    31         msg.addRecipients(RecipientType.TO, mail.getToAddress());// 设置收件人
    32 
    33         // 设置抄送
    34         String cc = mail.getCcAddress();
    35         if (!cc.isEmpty()) {
    36             msg.addRecipients(RecipientType.CC, cc);
    37         }
    38 
    39         // 设置暗送
    40         String bcc = mail.getBccAddress();
    41         if (!bcc.isEmpty()) {
    42             msg.addRecipients(RecipientType.BCC, bcc);
    43         }
    44 
    45         msg.setSubject(mail.getSubject());// 设置主题
    46 
    47         MimeMultipart parts = new MimeMultipart();// 创建部件集对象
    48 
    49         MimeBodyPart part = new MimeBodyPart();// 创建一个部件
    50         part.setContent(mail.getContent(), "text/html;charset=utf-8");// 设置邮件文本内容
    51         parts.addBodyPart(part);// 把部件添加到部件集中
    52 
    53         // 添加附件
    54         List<AttachBean> attachBeanList = mail.getAttachs();// 获取所有附件
    55         if (attachBeanList != null) {
    56             for (AttachBean attach : attachBeanList) {
    57                 MimeBodyPart attachPart = new MimeBodyPart();// 创建一个部件
    58                 attachPart.attachFile(attach.getFile());// 设置附件文件
    59                 attachPart.setFileName(MimeUtility.encodeText(attach
    60                         .getFileName()));// 设置附件文件名
    61                 String cid = attach.getCid();
    62                 if(cid != null) {
    63                     attachPart.setContentID(cid);
    64                 }
    65                 parts.addBodyPart(attachPart); 
    66             }
    67         }
    68 
    69         msg.setContent(parts);// 给邮件设置内容
    70         Transport.send(msg);// 发邮件
    71     }
    72 }

    邮件中的附件类:

     1 /*
     2  * 附件类,只有文件,即附件才文件名
     3  */
     4 public class AttachBean {
     5     private String cid;
     6     private File file;
     7     private String fileName;
     8 
     9     public String getCid() {
    10         return cid;
    11     }
    12 
    13     public void setCid(String cid) {
    14         this.cid = cid;
    15     }
    16     
    17     public File getFile() {
    18         return file;
    19     }
    20 
    21     public void setFile(File file) {
    22         this.file = file;
    23     }
    24 
    25     public String getFileName() {
    26         return fileName;
    27     }
    28 
    29     public void setFileName(String fileName) {
    30         this.fileName = fileName;
    31     }
    32 
    33     public AttachBean() {
    34 
    35     }
    36 
    37     public AttachBean(File file, String fileName) {
    38         super();
    39         this.file = file;
    40         this.fileName = fileName;
    41     }
    42 }
  • 相关阅读:
    SQL Server 损坏修复
    记录一些数据库函数或全局变量
    查询数据库空间使用情况
    SQL Server 2008文件与文件组的关系
    大型网站--负载均衡架构
    本地事务和分布式事务工作实践
    IIS防止同一IP大量非法访问
    使用EventLog类写Windows事件日志
    1878: [SDOI2009]HH的项链
    模板
  • 原文地址:https://www.cnblogs.com/zou-zou/p/6129530.html
Copyright © 2020-2023  润新知