Discuss / Java / jdk1.8 使用1.6.2 始终无法嵌入图片

jdk1.8 使用1.6.2 始终无法嵌入图片

Topic source
/**
     * 正文内嵌图片
     *
     * @param multipart
     * @param imagePath
     */
    public static void setMainBodyWithEmbedImage(Multipart multipart, String text, String imagePath) {
        //正文对象
        try {
            MimeBodyPart textPart = new MimeBodyPart();
            textPart.setContent("<body><div>" + text + "</div> <p><img src='cid:sunset' /></p></body>", "text/html;charset=utf-8");
            multipart.addBodyPart(textPart);
            //图片对象
            MimeBodyPart imgPart = new MimeBodyPart();
            Path path = Paths.get(imagePath);
            imgPart.setFileName(path.getFileName().toString());
            imgPart.setDataHandler(new DataHandler(new ByteArrayDataSource(Files.newInputStream(path), "image/*")));
            imgPart.setContentID("sunset");
            //imgPart.setHeader("Content-ID", "sunset");
            multipart.addBodyPart(imgPart);
        } catch (MessagingException | IOException e) {
            e.printStackTrace();
        }
    }

知道原因了,因为内嵌图片设置了文件名,所以一直当成附件处理了。

 /**
     * 正文内嵌图片
     *
     * @param multipart
     * @param imagePath
     */
    public static void setMainBodyWithEmbedImage(Multipart multipart, String text, String imagePath) {
        //正文对象
        try {
            //图片对象
            MimeBodyPart imgPart = new MimeBodyPart();
            Path path = Paths.get(imagePath);
            //imgPart.setFileName(path.getFileName().toString());
            imgPart.setDataHandler(new DataHandler(new ByteArrayDataSource(Files.newInputStream(path), "image/png")));
            imgPart.setContentID("mailTestPic");
            //imgPart.setHeader("Content-ID", "sunset");
            MimeBodyPart textPart = new MimeBodyPart();
            //textPart.setContent("<img src='cid:yuzq' />", "text/html;charset=utf-8");
            textPart.setContent("这是一张图片<br/><a href='http://www.cnblogs.com/ysocean/p/7666061.html'><img src='cid:mailTestPic'/></a>", "text/html;charset=UTF-8");
            MimeMultipart mm_text_image = new MimeMultipart();
            mm_text_image.addBodyPart(imgPart);
            mm_text_image.addBodyPart(textPart);
            mm_text_image.setSubType("related");    // 关联关系
            MimeBodyPart text_image = new MimeBodyPart();
            text_image.setContent(mm_text_image);
            multipart.addBodyPart(text_image);
        } catch (MessagingException | IOException e) {
            e.printStackTrace();
        }
    }


  • 1

Reply