首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

JavaMail 實戰:基於 JavaMail + JAF 發送文本/HTML 郵件完整教程

     編輯:Java 綜合教學

JavaMail 實戰:基於 JavaMail + JAF 發送文本/HTML 郵件完整教程

環境準備

  • JDK:Java SE 需額外下載 JavaMail 1.4.5 及 JAF 1.1.1;Java EE JDK 已內置。
  • 所需 JAR:mail.jar、dsn.jar、imap.jar、mailapi.jar、pop3.jar、smtp.jar、activation.jar 全部加入項目。

四大核心類架構

  1. MailSenderInfo — 郵件元數據封裝(服務器、端口、賬號、密碼、發/收件人、主題、內容、附件、是否驗證)。
  2. MyAuthenticator — 繼承 javax.mail.Authenticator,提供用戶名/密碼認證。
  3. SimpleMailSender — 核心發送邏輯,提供兩種靜態方法:
    • sendTextMail():純文本郵件;
    • sendHtmlMail():HTML 富文本郵件(MimeMultipart + text/html; charset=utf-8)。
  4. SendMailDemo — 測試類,配置 163 SMTP 示例(需開啟 POP3/SMTP/IMAP 服務並生成授權碼)。

關鍵代碼片段

Session 創建與發送流程

Properties pro = mailInfo.getProperties();
MyAuthenticator auth = mailInfo.isValidate() 
    ? new MyAuthenticator(mailInfo.getUserName(), mailInfo.getPassword()) 
    : null;
Session session = Session.getDefaultInstance(pro, auth);

MimeMessage msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(mailInfo.getFromAddress()));
msg.setRecipient(Message.RecipientType.TO, new InternetAddress(mailInfo.getToAddress()));
msg.setSubject(mailInfo.getSubject());
msg.setSentDate(new Date());

// 文本郵件
msg.setText(mailInfo.getContent());
Transport.send(msg);

// HTML 郵件
MimeMultipart mp = new MimeMultipart();
MimeBodyPart html = new MimeBodyPart();
html.setContent(mailInfo.getContent(), "text/html; charset=utf-8");
mp.addBodyPart(html);
msg.setContent(mp);
Transport.send(msg);

效果對比

  • 文本模式:內容原樣顯示,標籤不渲染;
  • HTML 模式:支持排版、圖片、鏈接等富文本效果。

常見坑點提示

  • 163/qq 等郵箱需在網頁端開啟「SMTP 服務」並使用「授權碼」而非登錄密碼;
  • 端口通常 25/465/587,視服務商而定;
  • 附件發送需在 MimeMultipart 再添加 MimeBodyPart 並 attachFile()。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved