zoukankan      html  css  js  c++  java
  • 针对发送网络附件的java方法(使用Apache的jar包调用)

    1、先要在pom.xml文件中引入对应的jar包

     <!--添加邮件的网络附件 start-->
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-email</artifactId>
                <version>1.3.2</version>
            </dependency>
    <!--添加邮件的网络附件 end-->

    2、发送网路哦邮件的方法

    import org.apache.commons.mail.*;
    import org.apache.commons.mail.resolver.DataSourceCompositeResolver;
    import org.apache.commons.mail.resolver.DataSourceFileResolver;
    import org.apache.commons.mail.resolver.DataSourceUrlResolver;
     /**
         * 为邮件添加附件
         * @param email 邮件
         * @param urls 附件链接
         * @param names 附件名称,最好有后缀名才能预览文件
         */
        public void addAttachment(ImageHtmlEmail email, List<String> urls, List<String> names) {
            // 保证附件名的长度和链接一一对应
            while (urls.size() > names.size()) {
                names.add("");
            }
    
            for (int i = 0; i < urls.size(); i++) {
                EmailAttachment attachment = new EmailAttachment();
                try {
                    attachment.setURL(new URL(urls.get(i)));
                    attachment.setDisposition(EmailAttachment.ATTACHMENT);
    //                attachment.setDescription("Apache logo");
                    attachment.setName(names.get(i));
                } catch (MalformedURLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                try {
                    email.attach(attachment); // 将附件添加到邮件中
                } catch (EmailException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
      //添加网络附件
        public  boolean sendHtmlEmailWithImg(IMailService mailService, String huiyi_id, String toMail, String subject, String content, List<String> urls, List<String> names) throws Exception {
    //        public  boolean sendHtmlEmailWithImg(ExHashMap mail, String huiyi_id, String toMail, String subject, String content, List<String> urls, List<String> names) throws Exception {
            //获取发送邮箱
            System.setProperty("java.net.preferIPv4Stack", "true");
            System.setProperty("mail.smtp.ssl.enable", "true");
            ExHashMap mail = getMail(mailService, huiyi_id);
            String htmlEmailContent = content;
            ImageHtmlEmail email = new ImageHtmlEmail();//用ImageHtmlEmail来发送
            email.setSSLOnConnect(true);
            email.setDebug(true);//可以看到执行过程的debug信息
            email.setCharset("UTF-8");//防止乱码
            email.setSSLCheckServerIdentity(true);
            email.setSslSmtpPort(mail.getString("port")); // 设定SSL端口
            email.setSmtpPort(mail.getInt("port"));
            //解析本地图片和网络图片都有的html文件重点就是下面这两行;
            //ImageHtmlEmail通过setDataSourceResolver来识别并嵌入图片
            //查看DataSourceResolver的继承结构发现有几个好用的子类
            DataSourceResolver[] dataSourceResolvers =
                    new DataSourceResolver[]{new DataSourceFileResolver(),//添加DataSourceFileResolver用于解析本地图片
                            new DataSourceUrlResolver(new URL("http://"))};//添加DataSourceUrlResolver用于解析网络图片,注意:new URL("http://")
            //DataSourceCompositeResolver类可以加入多个DataSourceResolver,
            //把需要的DataSourceResolver放到一个数组里传进去就可以了;
            email.setDataSourceResolver(new DataSourceCompositeResolver(dataSourceResolvers));
            // 邮箱登陆信息
            email.setHostName(mail.getString("smtp"));//email.setHostName("smtp.qq.com");
            email.addTo(toMail, toMail);//email.addTo("*@qq.com", "Jo");
            email.setFrom(mail.getString("username"), mail.getString("username")); //email.setFrom("*@qq.com", "Me"); // 必须和登陆邮箱名一致,否则会报错
            email.setAuthenticator(new DefaultAuthenticator(mail.getString("username"), mail.getString("password"))); // 邮箱名和登陆密码
            email.setSubject(subject);//email.setSubject("发送一张图片,看看是否可以收到。");
            //添加附件
            addAttachment(email,urls,names);
            email.setHtmlMsg(htmlEmailContent);
    
            //如果客户端不去持HTML格式会显示这句话,不过应该很少有不支持HTML格式的客户端了吧
            email.setTextMsg("你的邮箱客户端不支持HTML格式邮件");
            String res = email.send();
            return true;
        }
        public static void main(String[] args){
            ExHashMap email = new ExHashMap();
            email.put("smtp","smtp.263.net");
            email.put("port","465");
            email.put("username","conference@ciccst.org.cn");
            email.put("password","Mail_Sent2017");
            List<String> urls = new ArrayList<String>();
            urls.add("https://img1.360buyimg.com/imgb/s250x250_jfs/t6391/84/85826224/305484/7812e706/59390161N9b653d78.jpg");
            List<String> names = new ArrayList<String>();
            names.add("hahaha.jpg");
    
            MailUtil mailUtil = new MailUtil();
            try {
                mailUtil.sendHtmlEmailWithImg(email, "huiyi_id", "744924365@qq.com", "邮件标题", "邮件内容", urls, names);
            }catch (Exception e){
                e.printStackTrace();
            }
        }
  • 相关阅读:
    第二阶段冲刺04
    找水王
    第二阶段冲刺03
    第二阶段冲刺02
    第二阶段冲刺01
    学习进度12
    梦断代码阅读笔记07
    第一阶段意见评论
    学习进度11
    求素数p的原根
  • 原文地址:https://www.cnblogs.com/dhrwawa/p/11397080.html
Copyright © 2011-2022 走看看