首页 > 解决方案 > 如何将多个内联 base64 编码图像附加到邮件?

问题描述

我有以下代码

final JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
        MimeMessage mimeMessage = mailSender.createMimeMessage();
        MimeMessageHelper helper;
    try { 
      helper = new MimeMessageHelper(mimeMessage, false, "utf-8");
      String htmlMsg = "<body><div style="padding-top: 1px"><table 
       style="width: 100%">  <tr> <td align="left"><img align="left" 
       src="cid:**image1**" style="margin-left: -7px; width: 50%;"></td>                                    
       <td align="right"><img align="right" src="cid:**image2**"                    
      style="margin-left: 100px; width: 50%;"> </td>   </tr> </table></div> 
       <body>"



        Multipart multipart = new MimeMultipart("related");
        MimeBodyPart messageBodyPart = new MimeBodyPart();
        messageBodyPart.setContent(htmlMsg, "text/html");
        messageBodyPart.setDisposition(BodyPart.INLINE);
        multipart.addBodyPart(messageBodyPart);
        InternetHeaders headers = new InternetHeaders();
        headers.addHeader("Content-Type", "image/png");
        headers.addHeader("Content-Transfer-Encoding", "base64");
        String base64EncodedImageContentByteArray="encdoe value";
        String base64EncodedImageContentByteArray1 = "encoded value";
        MimeBodyPart imagePart1 = new MimeBodyPart(headers, 
        base64EncodedImageContentByteArray.getBytes());
        imagePart1.setDisposition(MimeBodyPart.INLINE);
        imagePart1.setContentID("image1");
        imagePart1.setFileName("image1.jpg");
        MimeBodyPart imagePart2 = new MimeBodyPart(headers, 
        base64EncodedImageContentByteArray1.getBytes());
        imagePart2.setDisposition(MimeBodyPart.INLINE);
        imagePart2.setContentID("image2");
        imagePart2.setFileName("image2.jpg");
        multipart.addBodyPart(imagePart1);
        multipart.addBodyPart(imagePart2);
        multipart.addBodyPart(messageBodyPart);
        mimeMessage.setContent(multipart);
        mimeMessage.setHeader("MIME-Version", "1.0");

但是当我收到邮件时,第一张图片没有显示,但第二张图片显示在邮件中。对于第一个图像位置,它显示十字。我还需要在邮件中附加多个图像(base64 编码值)

标签: javajakarta-mailmime-typesmultipartmime-message

解决方案


推荐阅读