当前位置: 代码迷 >> java >> 我的内联图像未与其他HTML内容一起加载到Java Mail API中
  详细解决方案

我的内联图像未与其他HTML内容一起加载到Java Mail API中

热度:24   发布时间:2023-07-17 20:47:53.0

这是我的图像路径: <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页面中添加动态内容。 我面临问题,因为图像仅以邮件形式发送。

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

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

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

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

  相关解决方案