首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在邮件正文中发送图像而不像java中的附件

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

Stack Overflow用户
提问于 2017-08-08 13:19:50
回答 2查看 2.3K关注 0票数 1

我正在做Java Web应用程序,我正在邮件正文中发送邮件,我需要显示图像,但当我发送邮件时,它需要图像附件,我不想附加我需要在正文内容中显示图像。有人能告诉我如何做到这一点吗

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-08-08 14:16:23

就像@scary-袋熊提到的那样,你没有添加第一杆。我想你的本意是:

代码语言:javascript
运行
复制
        ...
        // add it
        multipart.addBodyPart(messageBodyPart);
        // second part (the image)
        ...

您还可以将Content-Disposition头部添加到镜像部分:

代码语言:javascript
运行
复制
messageBodyPart.setDisposition(MimeBodyPart.INLINE);

更新:

抱歉,您还必须提前创建multipart:

代码语言:javascript
运行
复制
        ...
        // add it
        MimeMultipart multipart = new MimeMultipart("related");
        multipart.addBodyPart(messageBodyPart);
        // second part (the image)
        ...

更新2:

试试这个:

代码语言:javascript
运行
复制
          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);
票数 2
EN

Stack Overflow用户

发布于 2017-08-08 13:27:15

如果你看一下你的代码

代码语言:javascript
运行
复制
messageBodyPart.setContent(htmlText, "text/html");

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

您将看到在尚未添加HTML部件的情况下正在重新初始化messageBodyPart

我建议您使用不同的对象,然后添加这两个对象

代码语言:javascript
运行
复制
// second part (the image)
messageBodyPart2 = new MimeBodyPart();
....
multipart.addBodyPart(messageBodyPart);
multipart.addBodyPart(messageBodyPart2);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45559834

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档