在現代企業應用開發中,郵件功能幾乎是標配。無論是系統通知、營銷推廣還是密碼重置,HTML 格式郵件都能提供比純文本更豐富的呈現效果。本文將系統梳理 JavaMail 處理 HTML 郵件的核心技術點,涵蓋發送與接收兩大場景,助你快速構建健壯的郵件客戶端。
發送 HTML 郵件的核心在於正確設置 Content-Type 為 text/html; charset=utf-8。使用 MimeMessage 和 MimeMultipart 可實現純文本與 HTML 兼容發送:
MimeMessage message = new MimeMessage(session);
message.setSubject(subject, "UTF-8");
MimeBodyPart htmlPart = new MimeBodyPart();
htmlPart.setContent(htmlContent, "text/html; charset=utf-8");
MimeMultipart multipart = new MimeMultipart("alternative");
multipart.addBodyPart(htmlPart);
message.setContent(multipart);
HTML 中引用本地圖片需使用 CID 機制,將圖片作為 MimeBodyPart 添加並設置 Content-ID:
MimeBodyPart imagePart = new MimeBodyPart();
imagePart.attachFile(new File("logo.png"));
imagePart.setContentID("<logo@cid>");
imagePart.setDisposition(MimeBodyPart.INLINE);
HTML 內容中對應引用:<img src="cid:logo@cid">。
接收端需遞歸解析 Part 結構,判斷 isMimeType("text/html") 提取 HTML 正文,同時處理 multipart/alternative 和 multipart/related 等嵌套結構。
對於 cid: 協議的圖片,需建立 Content-ID 到 InputStream 的映射,解析 HTML 時替換為 Base64 或本地臨時文件路徑,確保離線查看完整。
掌握 JavaMail 的 MIME 模型是處理 HTML 郵件的基石。發送端重點在於正確構建多部件結構與 CID 綁定,接收端核心是遞歸解析與資源映射。配合恰當的異常處理、日誌記錄與單元測試,即可構建生產級郵件模塊。
提示:完整示例代碼與進階技巧(如 DKIM 簽名、S/MIME 加密)可參考 JavaMail 官方 FAQ 或 Apache Commons Email 封裝庫。