在电子邮件中嵌入内嵌图像并通过cid引用它?

时间:2012-10-31 11:45:25

标签: java javamail mime-types mime-message

我发送带有mime消息的电子邮件的内嵌图像。这是相同的简要代码。这工作正常。 我 问题是我没有将MimeMessage内容类型设置为multipart / related(也没有设置 多部分子类型相关)仍然我的代码工作正常,我可以获得预期位置的内嵌图像。 当我用cid引用图像部分时,我真的应该关心将Content-Type设置为multipart / related吗? 或服务器负责吗?

  MimeMessage   msg = new MimeMessage(mailSession);
  MimeMultipart mpart = new MimeMultipart();
  MimeBodyPart bp = new MimeBodyPart();
  bp.setText("plain text and here is html image refering image part <img src="cid:Unique-ContentId" />", CHARSET_UTF_8, MESSAGE_HTML_CONTENT_TYPE);
  // add message body
  mpart.addBodyPart(bp);

 // adding inline image  part
  MimeBodyPart bodyPart1 = new MimeBodyPart();
  bodyPart1.setFileName("inline image");
  file1 = new File("image1");
  DataSource source1 = new FileDataSource(file);
  bodyPart1.setDataHandler(new DataHandler(source));
  bodyPart1.setDisposition(MimeBodyPart.INLINE);
  bodyPart1.setHeader("Content-ID", "Unique-ContentId");
  bodyPart1.setHeader("Content-Type", "image/jpeg");
  mpart.addBodyPart(bodyPart1);

  // At last setting multipart In MimeMessage
  msg.setContent(mpart);

仅供参考,我的电子邮件客户端可以是outlook,lotusnotes,yahoo,gmail,thunderbird

1 个答案:

答案 0 :(得分:0)

这就是我们所谓的“运气”。 : - )

显然,您使用的电子邮件客户端在解释您发送的邮件时非常慷慨。电子邮件规范中没有任何内容表明他们应该以这种方式解释这些消息。