zoukankan      html  css  js  c++  java
  • java利用commons-email发送邮件并进行封装

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

    该工具类支持多个发送人,多个抄送人,多个密送人,多个附件等功能。非常强大。

      pom.xml

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.10</version>
    </dependency>
    <!-- email -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-email</artifactId>
        <version>1.4</version>
    </dependency>
    View Code
    MailInfo.java
    package com.example.demo.email;
    
    import lombok.Data;
    import org.apache.commons.mail.EmailAttachment;
    
    import java.util.List;
    
    /**
     * Created by 敲代码的卡卡罗特 on 2018/3/29.
     */
    @Data
    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 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);
        }
    
    }
    View Code
    
    
    MailUtil.java
    package com.example.demo.email;
    
    import org.apache.commons.mail.EmailAttachment;
    import org.apache.commons.mail.EmailException;
    import org.apache.commons.mail.HtmlEmail;
    
    import java.util.List;
    
    /**
     * Created by 敲代码的卡卡罗特 on 2018/3/29.
     */
    public class MailUtil {
        //邮箱
        private static String mailServerHost = "smtp.163.com";
        private static String mailSenderAddress = "15515664xxx@163.com";
        private static String mailSenderNick = "敲代码的卡卡罗特";
        private static String mailSenderUsername = "15515664xxx@163.com";
        private static String mailSenderPassword = "xxxxx";
    
        /**
         * 发送 邮件方法 (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();
            }
    
        }
    }
    View Code
    Test.java
    package com.example.demo.email;
    
    import org.apache.commons.mail.EmailAttachment;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * Created by 敲代码的卡卡罗特 on 2018/3/29.
     */
    public class Test {
        /**
         * @return void
         */
        public static void main(String[] args) {
            MailInfo mailInfo = new MailInfo();
            List<String> toList = new ArrayList<String>();
            toList.add("xxx@163.com");
    
            List<String> ccList = new ArrayList<String>();
            ccList.add("xxx@163.com");
    
            List<String> bccList = new ArrayList<String>();
            bccList.add("my@163.com");
    
            //添加附件
            EmailAttachment att = new EmailAttachment();
            att.setPath("E:\liuzhonghua\备份\xx.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);
    
        }
    }
    View Code
    
    
    
    ok,亲测可用!!!!!!
     
  • 相关阅读:
    区分/不区分大小写的比较,查找字符串在另一字符串中的位置,字符串开头是否包括另一字符串 hasPrefix
    获取文件名以及后缀
    监听Documents文件夹内文件发生改变
    根据路径获取文件大小
    获取视频第一帧的方法
    判断图片格式
    iTunes文件共享
    iOS 10 隐私权限设置
    uCos 学习:0-有关概念
    ALSA 有关文档
  • 原文地址:https://www.cnblogs.com/coder-lzh/p/8668667.html
Copyright © 2011-2022 走看看