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 です。