如何在邮件正文中发送图像而不是像java中的附件

时间:2017-08-08 05:19:50

标签: java email

我正在做Java Web应用程序,我在邮件正文中发送邮件我需要显示图像但是当我发送邮件它需要图像附件我不想附件我需要在正文内容中显示图像任何人都可以告诉我如何做到这一点

2 个答案:

答案 0 :(得分:1)

正如@ scary-wombat所提到的那样,你没有添加第一个标准杆。我想你的意思是:

        ...
        // add it
        multipart.addBodyPart(messageBodyPart);
        // second part (the image)
        ...

您还可以向图像部分添加Content-Disposition标头:

messageBodyPart.setDisposition(MimeBodyPart.INLINE);

更新:

抱歉,您还必须提升多部分的创建:

        ...
        // add it
        MimeMultipart multipart = new MimeMultipart("related");
        multipart.addBodyPart(messageBodyPart);
        // second part (the image)
        ...

更新2:

试试这个:

          BodyPart messageBodyPart = new MimeBodyPart();
          String htmlText = "<H1>Hello</H1><img src=\"cid:image\">";
          messageBodyPart.setContent(htmlText, "text/html");
          // add it
         MimeMultipart multipart = new MimeMultipart("related");

         multipart.addBodyPart(messageBodyPart);

        // second part (the image)
          messageBodyPart = new MimeBodyPart();

          java.io.InputStream inputStream = this.getClass().getResourceAsStream("/HappyBirthday.JPG");
         ByteArrayDataSource ds = new ByteArrayDataSource(inputStream, "image/jpg");
         System.out.println(inputStream);

          messageBodyPart.setDataHandler(new DataHandler(ds));
          messageBodyPart.setHeader("Content-ID", "<image>");

          messageBodyPart.setDisposition(MimeBodyPart.INLINE);

         multipart.addBodyPart(messageBodyPart);
         message.setContent(multipart);  
         // Send message
         Transport.send(message);

答案 1 :(得分:0)

如果你看一下你的代码

messageBodyPart

您将看到在HTML部分尚未添加的情况下重新初始化// second part (the image) messageBodyPart2 = new MimeBodyPart(); .... multipart.addBodyPart(messageBodyPart); multipart.addBodyPart(messageBodyPart2);

我建议您使用其他对象,然后再添加

File.AppendAllText("test.txt", "mytext"+ Environment.NewLine);