`

java mail 图片

    博客分类:
  • java
阅读更多

public boolean sendMailWithPic(String from, String to, String subject,
                                   String content,

                                   int subscribeid) {
//        try {
//            content = new String(content.getBytes("ISO-8859-1"),
//                                 "GBK");
//        } catch (UnsupportedEncodingException ex) {
//            logger.error(ex.getMessage());
//        }

        Properties props = new Properties();

        logger.info("服务器" + host);

        props.put("mail.smtp.host", host); // 指定SMTP服务器

        props.put("mail.smtp.auth", "true"); // 指定是否需要SMTP验证

        try {

            logger.info("收件人: " + to);

            Session mailSession = Session.getDefaultInstance(props);

            mailSession.setDebug(true); // 是否在控制台显示debug信息

            LinkedList attachList = this.getLinkedlist(con); // 附件的list,它的element都是byte[],即图片的二进制流

            logger.info("attachList的值为::::"+attachList.size());

            Message message = new MimeMessage(mailSession);

            message.setFrom(new InternetAddress(from)); // 发件人

            message.addRecipient(Message.RecipientType.TO, new InternetAddress(

                    to)); // 收件人

            sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();

            message.setSubject("=?GB2312?B?" + enc.encode(subject.getBytes()) +

                               "?=");

            // 新建一个MimeMultipart对象用来存放BodyPart对象(事实上可以存放多个)
            MimeMultipart mmt = new MimeMultipart();
            // 新建一个存放信件内容的BodyPart对象
            BodyPart mbp = new MimeBodyPart();

            mbp.setContent(content, "text/html; charset=GBK");

            // 这句很重要,千万不要忘了
            mmt.setSubType("related");

            mmt.addBodyPart(mbp);

            // add the attachments
            for (int i = 0; i < attachList.size(); i++) {
                logger.info("i的值为::::::::::::"+i);
                // 新建一个存放附件的BodyPart
                MimeBodyPart mdp = new MimeBodyPart();
                DataHandler dh = new DataHandler(new ByteArrayDataSource((byte[])
                        attachList.get(i), "application/octet-stream"));
                mdp.setDataHandler(dh);
                // 加上这句将作为附件发送,否则将作为信件的文本内容
                mdp.setFileName(new Integer(i).toString() + ".jpg");
                mdp.setHeader("Content-ID", "<IMG" + new Integer(i).toString()+">");
                logger.info("jdjdjdjdjdjdjdjdj"+"<IMG" + new Integer(i).toString()+">");
                // 将含有附件的BodyPart加入到MimeMultipart对象中
                mmt.addBodyPart(mdp);
            }

            // 把mm作为消息对象的内容
            message.setContent(mmt);

            message.saveChanges();

//            Multipart mm = new MimeMultipart();
//
//            mm.addBodyPart(mbp); //将BodyPart加入到MimeMultipart对象中(可以加入多个BodyPart)
//
//            message.setContent(mm); //把mm作为消息对象的内容
//
//            message.saveChanges();

            Transport transport = mailSession.getTransport("smtp");

            try {

                transport.connect(host, user, password);

                transport.sendMessage(message, message.getAllRecipients());

            } catch (Exception e) {

                logger.error(e.getMessage());
                boolean bl = DBOperate.executePreparedUpdate(e.getMessage(),
                        subscribeid, con);
                while (bl == false) {
                    sleep(6000);
                    if (con != null) {
                        dboperate.close(con);
                    }
                    con = null;
                    con = getConnection();
                    bl = DBOperate.executePreparedUpdate(e.getMessage(),
                            subscribeid, con);
                }
                return false;

            } finally {
                transport.close();
            }
        } catch (Exception e) {
            logger.error(e.getMessage());
            boolean bl = DBOperate.executePreparedUpdate(e.getMessage(),
                    subscribeid, con);
            while (bl == false) {
                sleep(6000);
                if (con != null) {
                    dboperate.close(con);
                }
                con = null;
                con = getConnection();
                bl = DBOperate.executePreparedUpdate(e.getMessage(),
                        subscribeid, con);
            }
            return false;

        }

        String sql = "update CSBILLSUBSCRIBE t set SENDTIME=sysdate,SENDSTATUS='发送成功!' where t.SUBSCRIBEID=" +

                     subscribeid;

        boolean bl = DBOperate.executeUpdate(sql, con);
        while (bl == false) {
            sleep(6000);
            if (con != null) {
                dboperate.close(con);
            }
            con = null;
            con = getConnection();
            bl = DBOperate.executeUpdate(sql, con);
        }
        logger.info("发送成功");
        return true;
    }

   /**
    * 从数据库中去得图片的二进制数组,添加到LinkedList
    * @param content String
    * @param subscribeid int
    * @param con Connection
    * @return boolean
    */
   public LinkedList getLinkedlist(Connection con) {
       PreparedStatement ps = null;
       ResultSet rs = null;
       LinkedList liklist=new LinkedList();
       String sql = "select * from csmpicupload order by PICID";
       //String sql = "update CSBILLSUBSCRIBE t set SENDTIME=sysdate,SENDSTATUS=? where t.SUBSCRIBEID=?";
       //content="发送失败!,原因:"+content;
       logger.info(sql);
       try {
           ps = con.prepareStatement(sql);
           rs = ps.executeQuery();
           while (rs.next()) {
               Blob bb = rs.getBlob("PICSTORE");
              long length=bb.length();
              byte[] bt=bb.getBytes(1,(int)length);
              liklist.add(bt);

           }
       } catch (SQLException ex2) {
           logger.info("数据库异常错误!" + ex2.getMessage());
           return null;
       } finally {
           try {
               if (ps != null) {
                   ps.close();
               }
           } catch (SQLException ex3) {
               logger.info("数据库异常错误!" + ex3.getMessage());
               return null;
           }
       }
       return liklist;
   }

-------------------------------------------------------------------------------------

邮件的内容如下:

 sb = new StringBuffer();

        String content = "";

        sb.append("<style type=\"text/css\">.font {  font-size: 12px; color: #000000}.font3 {  font-size: 12px; font-weight: bold; color: #000000}</style><table id=\"printTable\" width=\"540\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" align=\"center\">");
        sb.append("<tr><td align=\"left\" colspan=\"2\"><img src=\"cid:IMG0\" width=\"100\" height=\"30\" border=\"0\"></td><td align=\"right\" colspan=\"4\"><img src=\"cid:IMG1\" width=\"100\" height=\"30\" border=\"0\"></td></tr>");
        sb.append(
                "<tr><TD colspan=\"3\" align=\"center\" class=\"font3\">电信有限公司").
                append(oraName).append("分公司“我的e家”客户帐单<br></TD></tr><tr><TD align=\"left\" class=\"font\" width=\"400\" colspan=\"2\">客户名称:");
        sb.append(customerorderbill.getACCTNAME()).append(
                "</TD><TD align=\"right\" class=\"font\">计费周期:").
                append(customerorderbill.getSTATEDATE()).append("<br>查询时间:").
                append(customerorderbill.getCURDATE()).append(
                        "</TD></tr><tr></table>");
        sb.append("<table width=\"540\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" align=\"center\"><tr><td align=\"center\" valign=\"top\" colspan=\"3\"><table id=\"sortTable\" width=\"540\" border=\"0\" cellpadding=\"4\" cellspacing=\"1\" bgcolor=\"#CCCCCC\" class=\"a\"><tr><TD class=\"font\" align=\"center\" bgcolor=\"#FFFFFF\" >基础包</TD><TD class=\"font\" align=\"center\" bgcolor=\"#FFFFFF\">");
        sb.append(customerorderbill.getPHONE()).append("</TD><TD class=\"font\" align=\"center\" colspan=\"2\" bgcolor=\"#FFFFFF\"></TD></tr><tr><TD class=\"font\" align=\"center\" bgcolor=\"#FFFFFF\" width=\"120\">可选包</TD><TD class=\"font\" align=\"center\" width=\"140\" bgcolor=\"#FFFFFF\">").
                append(customerorderbill.getPHS1()).append("&nbsp;</TD><TD class=\"font\" align=\"center\" width=\"140\" bgcolor=\"#FFFFFF\">");
        sb.append(customerorderbill.getPHS2()).append("&nbsp;</TD><TD class=\"font\" align=\"center\" width=\"140\" bgcolor=\"#FFFFFF\">").
                append(customerorderbill.getPHS3()).append("&nbsp;</TD> </tr></table><table id=\"sortTable2\" width=\"540\" border=\"0\" cellpadding=\"4\" cellspacing=\"1\" bgcolor=\"#CCCCCC\"><tr><TD class=\"font\" align=\"center\" colspan=\"6\">“我的e家”基础包及可选包成员合计费用信息(元)</TD></tr><tr><TD class=\"font\" align=\"center\"   bgcolor=\"#FFFFFF\" width=\"130\">费用项目</TD><TD class=\"font\" align=\"center\"   bgcolor=\"#FFFFFF\"  width=\"50\">费用</TD><TD class=\"font\" align=\"center\"   bgcolor=\"#FFFFFF\"  width=\"130\">费用项目</TD><TD class=\"font\" align=\"center\"   bgcolor=\"#FFFFFF\" width=\"50\">费用</TD><TD class=\"font\" align=\"center\"   bgcolor=\"#FFFFFF\"  width=\"130\">费用项目</TD><TD class=\"font\" align=\"center\"   bgcolor=\"#FFFFFF\" width=\"50\">费用</TD></tr>");

        logger.info("-------------开始循环-----------");

        int num = list.size(); //费用总条数

        for (Iterator it = list.iterator(); it.hasNext(); ) {
            Acctitem acct = new Acctitem();
            acct = (Acctitem) it.next();
//            logger.info(acct.getACCTITEMTYPENAME() +
//                        ":::::::&&&&&&&&&&&&&&&&&&&&&&&&&:::::::::" +
//                        acct.getACCTITEMCHARGE());
        }

        //logger.info("list.size--------------" + num);
        int hang = num / 3; //行数
        if (num % 3 > 0) {
            hang = hang + 1;
        }
        int m = 1;
        logger.info("-------------开始费用总计-----------");
        while (m <= hang) {
            int k = 1;
            sb.append("<tr>");
            for (int b = 0; b < hang * 3; b++) {
                //for (Iterator it = list.iterator(); it.hasNext(); ) {
//                logger.info("-------------bean 循环-----------");
                String paraname = "";
                double paravalue = 0;
                if (k == m) {
                    if (b < list.size()) {
                        Acctitem acct = new Acctitem();
                        acct = (Acctitem) list.get(b);
                        paraname = acct.getACCTITEMTYPENAME();
                        paravalue = acct.getACCTITEMCHARGE();
                    }
                    int dian = paraname.indexOf("、"); //判断是否缩进。
                    if (dian == -1) {
                        sb.append(
                                "<td align=\"left\" bgcolor=\"#FFFFFF\" class=\"font\">&nbsp;&nbsp;&nbsp;&nbsp;").
                                append(paraname).append(
                                        "</td><td align=\"center\" bgcolor=\"#FFFFFF\" class=\"font\">").
                                append(paravalue).append("</td>");

                    } else {
                        sb.append(
                                "<td align=\"left\" bgcolor=\"#FFFFFF\" class=\"font3\">").
                                append(paraname).append(
                                        "</td><td align=\"center\" bgcolor=\"#FFFFFF\" class=\"font\">").
                                append(paravalue).append("</td>");

                    }

                } else if (k == m + hang) {
                    if (b < list.size()) {
                        Acctitem acct = new Acctitem();
                        acct = (Acctitem) list.get(b);
                        paraname = acct.getACCTITEMTYPENAME();
                        paravalue = acct.getACCTITEMCHARGE();
                    }
                    int dian = paraname.indexOf("、"); //判断是否缩进。
                    if (dian == -1) {
                        sb.append(
                                "<td align=\"left\" bgcolor=\"#FFFFFF\" class=\"font\">&nbsp;&nbsp;&nbsp;&nbsp;").
                                append(paraname).append(
                                        "</td><td align=\"center\" bgcolor=\"#FFFFFF\" class=\"font\">").
                                append(paravalue).append("</td>");

                    } else {
                        sb.append(
                                "<td align=\"left\" bgcolor=\"#FFFFFF\" class=\"font3\">").
                                append(paraname).append(
                                        "</td><td align=\"center\" bgcolor=\"#FFFFFF\" class=\"font\">").
                                append(paravalue).append("</td>");

                    }

                } else if (k == hang * 2 + m) {
                    if (b < list.size()) {
                        Acctitem acct = new Acctitem();
                        acct = (Acctitem) list.get(b);
                        paraname = acct.getACCTITEMTYPENAME();
                        paravalue = acct.getACCTITEMCHARGE();
                    }
                    int dian = paraname.indexOf("、"); //判断是否缩进。
                    if (dian == -1) {
                        sb.append(
                                "<td align=\"left\" bgcolor=\"#FFFFFF\" class=\"font\">&nbsp;&nbsp;&nbsp;&nbsp;").
                                append(paraname).append(
                                        "</td><td align=\"center\" bgcolor=\"#FFFFFF\" class=\"font\">").
                                append(paravalue).append("</td>");

                    } else {
                        sb.append(
                                "<td align=\"left\" bgcolor=\"#FFFFFF\" class=\"font3\">").
                                append(paraname).append(
                                        "</td><td align=\"center\" bgcolor=\"#FFFFFF\" class=\"font\">").
                                append(paravalue).append("</td>");

                    }

                }
                k++;

            }
            sb.append("</tr>");
            m++;
        }
        sb.append("<tr><TD class=\"font\" align=\"center\" bgcolor=\"#FFFFFF\" >本月费用合计</TD>  <TD class=\"font\" align=\"center\" colspan=\"5\" bgcolor=\"#FFFFFF\">").
                append(customerorderbill.getBILLCHARGE()).append("元</TD></tr></table><table id=\"sortTable3\" width=\"540\" border=\"0\" cellpadding=\"4\" cellspacing=\"1\" bgcolor=\"#CCCCCC\" class=\"a\"><tr><TD class=\"font\" align=\"center\" colspan=\"6\">通信量信息</TD></tr><tr><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\">本地通话时长<br>(分钟)</TD><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\">国内长话时长<br>(分钟)</TD><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\">国际长话时长<br>(分钟)</TD><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\">台港澳长话时长<br>(分钟)</TD><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\">点对点短信<br>(条)</TD><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\">宽带上网时长<br>(小时)</TD></tr><tr><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\">");
        sb.append(customerorderbill.getBDDURATION()).append(
                "</TD><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\">").
                append(customerorderbill.getGNDURATION()).append(
                        "</TD><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\">").
                append(customerorderbill.getGJDURATION()).append(
                        "</TD><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\">").
                append(customerorderbill.getTGODURATION()).append(
                        "</TD><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\">").
                append(customerorderbill.getSMSDURATION()).append(
                        "</TD><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\">").
                append(customerorderbill.getNETDURATION());
        sb.append("</TD></tr><tr><TD class=\"font\" align=\"center\" colspan=\"6\">积分信息(分)</TD></tr><tr><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\" width=\"90\">本期新增<br>A</TD><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\" width=\"90\">上期末积余<br>B</TD><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\" width=\"90\">本期使用<br>C</TD><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\" width=\"90\">本期末积余<br>D=A+B-C</TD><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\" width=\"90\">&nbsp;</TD><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\" width=\"90\">&nbsp;</TD></tr>");
        sb.append(
                "<tr><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\">").
                append(customerorderbill.getTACHARGECNT()).append(
                        "</TD><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\">").
                append(customerorderbill.getPECHARGECNT()).append(
                        "</TD><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\">").
                append(customerorderbill.getTTCHARGECNT()).append(
                        "</TD><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\">").
                append(customerorderbill.getTECHARGECNT()).append("</TD><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\">&nbsp;</TD><TD class=\"font\" align=\"center\" bgcolor=\"#fafafa\">&nbsp;</TD></tr>");
        sb.append("<tr><TD class=\"font\" align=\"center\" colspan=\"6\" bgcolor=\"#fafafa\">注:本积分统计至上月底,后付费用户未缴费部分的消费积分因未激活,不包含在上述积分中</TD></tr></table></td></tr>");
        sb.append("<tr><td align=\"left\"><img src=\"cid:IMG2\" width=\"150\" height=\"30\" border=\"0\"></td><td align=\"right\"><img src=\"cid:IMG3\" width=\"150\" height=\"30\" border=\"0\"></td></tr></table>");

        content = sb.toString();


 

分享到:
评论

相关推荐

    java发送邮件,可带图片

    java发送邮件,邮件中可带样式和图片,本人测试,很好用,可根据个人需求发送邮件

    用Java Mail发送带有图片的html格式的邮件.txt

    用Java Mail发送带有图片的html格式的邮件.txt

    JAVA 发送HTML格式并带图片的邮件实例

    JAVA 发送文本格和HTML格式并带图片链接的邮件实例,图片可以为附件可以为邮件正文显示,可以为图片添加超链接

    用java mail发送包含图片的html

    NULL 博文链接:https://zhaozhongwei.iteye.com/blog/292867

    java源码包---java 源码 大量 实例

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    JAVA MAIL发送邮件带附件和图片

    NULL 博文链接:https://haroldxie.iteye.com/blog/697353

    Java查询OutLook邮件代码

    Java查询OutLook邮件代码,仅供参考

    写java程序实现发邮件功能

    压缩包中有纯java程序发送邮件其中有发送纯文本格式、带附件格式、图片格式、附件图片并显示格式。

    java源码包4

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    java发送内嵌图片邮件

    主要介绍了java发送内嵌图片邮件,在博客系统中需要邮件服务的功能,仅仅是发送文本内容,现在尝试一下发送内嵌图片邮件,感兴趣的小伙伴们可以参考一下

    java源码包3

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    JAVA上百实例源码以及开源项目

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    JAVA上百实例源码以及开源项目源代码

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    java邮件发送Demo(完整例子)

    java邮件发送Demo(完整例子):下面是我的测试方法: public static void demo(){ Mail mail=new Mail(); mail.setSmtpHost("smtp.163.com");/** 设置SMTP **/ String mailFrom="wangxin_admin@163.com"; ...

    java源码包2

     util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印图片的路径,水印一般格式是gif,png,这种图片可以设置透明度、水印旋转等,可以参考代码...

    Java 核心封装,原生ORM、LOG格式化、自定义Excel、Mail等等常用工具,开箱即用

    Java 核心封装,原生ORM、LOG格式化、自定义Excel、Mail等等常用工具 让Java开发者使用起来像python一样,做到直接调用库即可完成一件事。 1、java封装模块 想要将java的开发变的像python一样,让库的封装更彻底一点...

    Java案例开发锦集

    案例4 利用Java API发送E-mail 案例5 从Mail Server删除一条消息 案例6 在Java程序中实现FTP的功能 案例7 一个最简单的聊天程序 案例8 代理服务器的实现 第十章 Java综合实例 案例1 用Java...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java数组倒置 简单 Java图片加水印,支持旋转和透明度设置 摘要:Java源码,文件操作,图片水印 util实现Java图片水印添加功能,有添加图片水印和文字水印,可以设置水印位置,透明度、设置对线段锯齿状边缘处理、水印...

    java jdk实列宝典 光盘源代码

    18 java mail 使用smtp协议发送简单邮件; 发送带附件的邮件; 给多人发送邮件; 使用pop3接收邮件; 19jsp与servlet 获取客户端的真实ip地址; jsp无刷新聊天室; 设置和读取cookie; 上传文件; 用servlet生成图形验证码;...

    如何使用Java的mail的jar包查看邮件收信箱(简单易懂)

    使用Java的mail的jar包获取邮箱收取的邮件(注:这里不包含垃圾信箱的邮件),获取邮箱列表列表中包含邮件序号,在根据邮件序号获取邮件内容,同时创建自己项目的资源地址(如:图片、视频、压缩包等)。希望能为你...

Global site tag (gtag.js) - Google Analytics