我有一個關於MIME消息的內容類型的混淆。假設我有一個啞劇消息。它是一個多部分消息和主體部分都是這樣設置MimeMessage的內容類型?
- MIME主體部分包含純文本,HTML文本(如在 一些字母在身體粗體)包含附件
- 二MIME主體部分, 含有一個內嵌圖像(其正被從體稱爲與CID)
- 第三MIME主體部分
當我創建身體部分,我應該明確設置爲頂MIME消息,然後每個身體部位的內容類型?
如果是的話,他們應該在上面的例子中是什麼?
multipart/alternative
建議用於html,multipart/mixed
建議用於附件,multipart/related
建議用於內聯。我正在使用他們所有的,所以應該是什麼內容 - 鍵入完整的消息和不同的身體部位?
僅供參考,我試圖複製以上場景,我沒有爲整體MimeMessage或正文部分設置內容類型。
但我仍得到預期的東西,如純文本,粗體字母在正文,附件,嵌入式圖像詹姆斯在正確的地方
爲什麼詹姆斯解釋MIME消息和身體部位不設置內容類型,以及它如何以正確的方式展示它們?
代碼僅供參考
MimeMessage msg = new MimeMessage(mailSession);
MimeMultipart mpart = new MimeMultipart();
MimeBodyPart bp = new MimeBodyPart();
bp.setText("plain text and html text like<b>Test</>", CHARSET_UTF_8, MESSAGE_HTML_CONTENT_TYPE);
// add message body
mpart.addBodyPart(bp);
// adding attachment
MimeBodyPart bodyPart = new MimeBodyPart();
bodyPart.setFileName("WordFile1");
file = new File("word file");
DataSource source = new FileDataSource(file);
bodyPart.setDataHandler(new DataHandler(source));
mpart.addBodyPart(bodyPart);
// adding image inline
MimeBodyPart bodyPart2 = new MimeBodyPart();
bodyPart2.setFileName("inline image");
file2 = new File("image1");
DataSource source2 = new FileDataSource(file);
bodyPart2.setDataHandler(new DataHandler(source));
bodyPart2.setDisposition(MimeBodyPart.INLINE);
bodyPart2.setHeader("Content-ID", "Unique-CntentId");
bodyPart2.setHeader("Content-Type", "image/jpeg");
mpart.addBodyPart(bodyPart2);
// At last setting multipart In MimeMessage
msg.setContent(mpart);
與上面的代碼,我得到正確的HTML文本,純文本,內嵌圖片和附件,在正確的地方雷鳥與詹姆斯集成。
所以我不明白何時何地將multipart/mixed
,multipart/alternative
,multipart/related
設置爲Content-Type或郵件服務器是否在內部設置它?
謝謝比爾。這正是我通過調試發現,當我通過詹姆斯服務器使用thunderbird發送郵件 –
比爾你可以提供你的想法http://stackoverflow.com/questions/13157171/embedding-inline-image-in-email-and-如果你有一些想法,請參閱它的通過。在此先感謝 –
我在那裏添加了一條評論。 –