• java利用commons-email发送邮件并进行封装


    本例中利用commons-email发送邮件并进行封装,支持html内容和附件;Commons Email是Apache的Commons子项目下的一个邮件客户端组件,它是基于JavaMail的,大大简化了邮件的收发操作。

    所需jar包:commons-email-1.4.jar和mail.jar ,jar包下载地址 http://files.cnblogs.com/files/haha12/%E5%8F%91%E9%80%81%E9%82%AE%E4%BB%B6%E6%89%80%E9%9C%80jar%E5%8C%85.rar
    代码如下:

    MailInfo.java:邮件实体类

    package com.test.mail;
    
    import java.util.List;
    
    import org.apache.commons.mail.EmailAttachment;
    
    /**
     * 邮件相关信息
     * 
     */
    public class MailInfo {
        
        // 收件人
        private List<String> toAddress = null;
        // 抄送人地址
        private List<String> ccAddress = null;
        // 密送人
        private List<String> bccAddress = null;
        // 附件信息
        private List<EmailAttachment> attachments = null;
        // 邮件主题
        private String subject;
        // 邮件的文本内容
        private String content;
    
    
        public List<String> getToAddress() {
            return toAddress;
        }
    
        public void addToAddress(String toAddress) {
            this.toAddress.add(toAddress);
        }
    
        public void addToAddress(List<String> toAddress) {
            this.toAddress.addAll(toAddress);
        }
    
        public void addCcAddress(List<String> ccAddress) {
            if (null != ccAddress && ccAddress.size() > 0)
                this.ccAddress.addAll(ccAddress);
        }
    
        public List<EmailAttachment> getAttachments() {
            return attachments;
        }
    
        public void setAttachments(List<EmailAttachment> attachments) {
            this.attachments = attachments;
        }
    
        public List<String> getBccAddress() {
            return bccAddress;
        }
    
        public void setBccAddress(List<String> bccAddress) {
            this.bccAddress = bccAddress;
        }
    
        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 void setToAddress(List<String> toAddress) {
            this.toAddress = toAddress;
        }
    
        public List<String> getCcAddress() {
            return ccAddress;
        }
    
        public void setCcAddress(List<String> ccAddress) {
            this.ccAddress = ccAddress;
        }
    
    }

    MailUtil.java:发送邮件工具类

    package com.test.mail;
    
    import java.util.List;
    
    import org.apache.commons.mail.EmailAttachment;
    import org.apache.commons.mail.EmailException;
    import org.apache.commons.mail.HtmlEmail;
    
    /**
     * 发送邮件Util
     */
    public class MailUtil {
        
        //邮箱
        private static String mailServerHost = "smtp.163.com";
        private static String mailSenderAddress = "test@163.com";
        private static String mailSenderNick = "test";
        private static String mailSenderUsername = "test@163.com";
        private static String mailSenderPassword = "xxx";
        
        /**
         * 发送 邮件方法 (Html格式,支持附件)
         * 
         * @return void
         */
        public static void sendEmail(MailInfo mailInfo) {
             
            try {
                HtmlEmail email = new HtmlEmail();
                // 配置信息
                email.setHostName(mailServerHost);
                email.setFrom(mailSenderAddress,mailSenderNick);
                email.setAuthentication(mailSenderUsername,mailSenderPassword);
                email.setCharset("UTF-8");
                email.setSubject(mailInfo.getSubject());
                email.setHtmlMsg(mailInfo.getContent());
    
                // 添加附件
                List<EmailAttachment> attachments = mailInfo.getAttachments();
                if (null != attachments && attachments.size() > 0) {
                    for (int i = 0; i < attachments.size(); i++) {
                        email.attach(attachments.get(i));
                    }
                }
                
                // 收件人
                List<String> toAddress = mailInfo.getToAddress();
                if (null != toAddress && toAddress.size() > 0) {
                    for (int i = 0; i < toAddress.size(); i++) {
                            email.addTo(toAddress.get(i));
                    }
                }
                // 抄送人
                List<String> ccAddress = mailInfo.getCcAddress();
                if (null != ccAddress && ccAddress.size() > 0) {
                    for (int i = 0; i < ccAddress.size(); i++) {
                            email.addCc(ccAddress.get(i));
                    }
                }
                //邮件模板 密送人
                List<String> bccAddress = mailInfo.getBccAddress();
                if (null != bccAddress && bccAddress.size() > 0) {
                    for (int i = 0; i < bccAddress.size(); i++) {
                        email.addBcc(ccAddress.get(i));
                    }
                }
                email.send();
                System.out.println("邮件发送成功!");
            } catch (EmailException e) {
                e.printStackTrace();
            } 
    
        }
    }

    TestMail.java:发送邮件测试类

    package com.test.mail;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.apache.commons.mail.EmailAttachment;
    
    public class TestMail {
    
        /**
         * @return void
         */
        public static void main(String[] args) {
            MailInfo mailInfo = new MailInfo();
            List<String> toList = new ArrayList<String>();
            toList.add("my@163.com");
            
            List<String> ccList = new ArrayList<String>();
            ccList.add("my@163.com");
            
            List<String> bccList = new ArrayList<String>();
            bccList.add("my@163.com");
            
            //添加附件
            EmailAttachment att = new EmailAttachment();
            att.setPath("g:\测试.txt");
            att.setName("测试.txt");
            List<EmailAttachment> atts = new ArrayList<EmailAttachment>();
            atts.add(att);
            mailInfo.setAttachments(atts);
            
            mailInfo.setToAddress(toList);//收件人
            mailInfo.setCcAddress(ccList);//抄送人
            mailInfo.setBccAddress(bccList);//密送人
            
            mailInfo.setSubject("测试主题");
            mailInfo.setContent("内容:<h1>test,测试</h1>");
             
            MailUtil.sendEmail(mailInfo);
    
        }
    }

    代码执行后收到邮件的截图:

  • 相关阅读:
    atitit 提升数据库死锁处理总结
    CoreJava_线程并发(堵塞队列):在某个目录下搜索含有某keyword的文件
    HDU 4389——X mod f(x)(数位DP)
    POJ 1182 (经典食物链 /并查集扩展)
    【iOS-Android开发对照】 之 APP入口
    《Pro Android Graphics》读书笔记之第四节
    Android多个Module统一配置相同jar或库的版本号
    教你上传代码到码云(与github一样)
    解决本地项目推送到码云(github),上提示:failed to push some refs to ...
    android adb常用指令
  • 原文地址:https://www.cnblogs.com/haha12/p/4730274.html
Copyright © 2020-2023  润新知