Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将多个内联base64编码图像附加到邮件?_Java_Jakarta Mail_Mime Types_Multipart_Mime Message - Fatal编程技术网

Java 如何将多个内联base64编码图像附加到邮件?

Java 如何将多个内联base64编码图像附加到邮件?,java,jakarta-mail,mime-types,multipart,mime-message,Java,Jakarta Mail,Mime Types,Multipart,Mime Message,我有以下代码 final JavaMailSenderImpl mailSender = new JavaMailSenderImpl(); MimeMessage mimeMessage = mailSender.createMimeMessage(); MimeMessageHelper helper; try { helper = new MimeMessageHelper(mimeMessage, false, "utf-8");

我有以下代码

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");
final JavaMailSenderImpl mailSender=new JavaMailSenderImpl();
MimeMessage MimeMessage=mailssender.createMimeMessage();
mimessagehelper;
试试{
helper=新的mimessagehelper(mimessage,false,“utf-8”);
字符串htmlMsg=”
"
Multipart Multipart=新的mimemmultipart(“相关”);
MimeBodyPart messageBodyPart=新的MimeBodyPart();
messageBodyPart.setContent(htmlMsg,“text/html”);
messageBodyPart.setDisposition(BodyPart.INLINE);
multipart.addBodyPart(messageBodyPart);
InternetHeaders headers=新InternetHeaders();
headers.addHeader(“内容类型”、“图像/png”);
headers.addHeader(“内容传输编码”、“base64”);
字符串base64EncodedImageContentByteArray=“encdoe值”;
字符串base64EncodedImageContentByteArray1=“编码值”;
MimeBodyPart imagePart1=新的MimeBodyPart(标题,
base64EncodedImageContentByteArray.getBytes());
imagePart1.setDisposition(MimeBodyPart.INLINE);
imagePart1.setContentID(“image1”);
setFileName(“image1.jpg”);
MimeBodyPart imagePart2=新的MimeBodyPart(标题、,
base64EncodedImageContentByteArray1.getBytes());
imagePart2.setDisposition(MimeBodyPart.INLINE);
imagePart2.setContentID(“image2”);
setFileName(“image2.jpg”);
multipart.addBodyPart(imagePart1);
multipart.addBodyPart(imagePart2);
multipart.addBodyPart(messageBodyPart);
mimessage.setContent(多部分);
setHeader(“MIME版本”、“1.0”);

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

您自己不应该使用base64编码,您应该将其留给JavaMail,否则,请看下面的答案以获得灵感:好的。但是如何发送多个图像,因为我的图像以CLOB的形式存储在DB中。我使用了一条注释,因为这是一条与您的问题没有直接关系的建议(尽管可能是)。我需要对此进行测试,以找出解决方案,因为我通常不处理内联图像,而且我没有时间这样做。不过,我确实在您的代码中看到了很多奇怪的东西(对两个附件使用相同的
InternetHeaders
实例,添加
messageBodyPart
两次,为邮件正文设置内联处置,显式设置mime版本,显式强制使用odd base64等)。它们都可能导致您的问题(或者可能不是…)是的,你的代码中有很多无关的操作。这应该可以帮助你简化事情。通过使用多个InternetHeader,我的问题得到了解决。