我正在使用带有 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