【问题标题】:Embedding inline image in email and referring it thru cid?在电子邮件中嵌入内联图像并通过 cid 引用它?
【发布时间】:2012-10-20 20:46:20
【问题描述】:

我正在发送带有 mime 消息的电子邮件的内联图像。这是相同的简短代码。这工作正常。 我的 问题是我没有将 MimeMessage 内容类型设置为多部分/相关(也没有设置 相关的多部分子类型)我的代码仍然可以正常工作,并且能够在预期位置获得内联图像。 当我用 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

【问题讨论】:

    标签: java jakarta-mail mime-types mime-message


    【解决方案1】:

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

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

    【讨论】:

    • 嘿,比尔。这意味着我不能依赖这个。是吗?那么我的下一个问题是stackoverflow.com/questions/13177068/…。实际上,这对我来说是真正的障碍(也是我在上面提出疑问的背景)
    • 对,你不能依赖它。任何现有的电子邮件客户端都不太可能“破坏”这一点,但新的电子邮件客户端可能不会实现它。你可以决定它是否已经成为事实上的标准,即使规范没有说你应该这样做,每个人都会这样做。
    猜你喜欢
    • 2015-06-29
    • 1970-01-01
    • 2019-12-14
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-12
    • 1970-01-01
    相关资源
    最近更新 更多