我的内联图像未在其他一些HTML内容的java邮件API中加载

时间:2015-07-30 13:17:38

标签: java javamail

这是我的图片路径:<img src=\"cid:image\">

try {

            MimeMessage message = new MimeMessage(session);
            message.setFrom(new InternetAddress(
                    "shaanrisecustomercare@gmail.com"));
            message.setRecipient(Message.RecipientType.TO, new InternetAddress(
                    "smile.pavi3@gmail.com"));
            message.setSubject("Order Confirmation - Your Order with Shaanrise.com ["
                    + dm.getOrderTrackingId()
                    + "] has been successfully placed!");
            // This HTML mail have to 2 part, the BODY and the embedded image
            //
            MimeMultipart multipart = new MimeMultipart("related");

            // first part  (the html)
            BodyPart messageBodyPart = new MimeBodyPart();





            // second part (the image)
            messageBodyPart = new MimeBodyPart();
            DataSource fds = new FileDataSource
              ("D:\\latest codes\\shaanrise\\WebContent\\images\\company-logo.png");
            messageBodyPart.setDataHandler(new DataHandler(fds));
            messageBodyPart.setHeader("Content-ID","<image>");

            // add it
            multipart.addBodyPart(messageBodyPart);

            // put everything together
            message.setContent(multipart);
            String orderrsds="<tr><td style='border:1px solid grey;'><label>"+dm.getTransactionId()+"</label></td>"+
                    "<td style='border:1px solid grey;'><label>"+dm.getProductDescription()+"</label></td><td style='border:1px solid grey;'><label>"+dm.getOrderDate()+"</label> </td>"+
                    "<td style='border:1px solid grey;'><label>"+dm.getExpectedDelivery()+"</label></td>"+
                    "<td style='border:1px solid grey;'><label>"+dm.getQuantity()+"</label></td>"+
                    "<td style='border:1px solid grey;'><label>"+dm.getPrice()+"</label></td>"+
                    "<td style='border:1px solid grey;'><label>50</label> </td>"+
                    "<td style='border:1px solid grey;'><label>"+dm.getOrderAmount()+"</label></td></tr></table></div>";

            StringBuilder sb=new StringBuilder();

            sb.append(EmailString.order);
            sb.append(orderrsds);

            String footr=  EmailString.address;
            footr.replace("${to}", dm.getCustomerName());
            footr.replace("${shippingAddress}", dm.getShippingAddress());

            sb.append(footr);


              messageBodyPart.setContent(sb.toString(), "text/html; charset=ISO-8859-1");
              message.setContent(sb.toString(),"text/html");
             // messageBodyPart.setContent(EmailString.logo,"text/html");

             // message.setText(sb.toString(), "text/html");



            Transport.send(message);
        } catch (AddressException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (MessagingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
    }

这是我的图片路径:<img src=\"cid:image\">
我的图片未在java Mail中加载。我在图像html页面中添加动态内容正在加载动态内容但图像未加载。 我面临问题,因为图像仅作为邮件发送。

1 个答案:

答案 0 :(得分:1)

你的代码中有很多错误......

你创建两个MimeBodyParts但是将它们分配给同一个变量,第二个覆盖第一个。你需要两个变量,一个用于html部分,一个用于图像。

然后在将这些正文部分添加到multipart并将multipart设置为消息内容之后,通过使用html文本再次设置消息内容来覆盖它。

创建MimeBodyPart,使用setText设置html文本内容。将其添加到MimeMultipart。创建另一个MimeBodyPart,将内容设置为图像。将其添加到MimeMultipart。将MimeMultipart设置为消息的内容。