import java.io.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
/**
* 簡易 MailBean
* 提供簡便的郵件發送功能
*/
class ExtendString {
public ExtendString() {}
/**
* 去除字串首尾空白並轉為 GBK 編碼
*/
public String CS(String str) {
try {
if (str == null) return "";
str = str.trim();
if (str == null) return "";
// 從 ISO-8859-1 轉為 GBK
str = new String(str.getBytes("8859_1"), "GBK");
} catch (Exception e) {
System.out.println(e);
}
return str;
}
}
public class SendMail {
private String errMsg = "";
private ExtendString ExStr = new ExtendString();
private String sender = ""; // 寄件人
private String smtpHost = ""; // SMTP 伺服器
private String user = ""; // 登入帳號
private String passWord = ""; // 登入密碼
private String subject = ""; // 郵件主旨
public SendMail() {
this.setPropertiesAttri();
}
private void setPropertiesAttri() {
try {
// 從 classpath 載入屬性檔
InputStream is = getClass().getResourceAsStream("MailServer.properties");
Properties prop = new Properties();
prop.load(is);
this.setSmtpHost(prop.get("SmtpHost").toString());
// ... 繼續設定 sender, user, passWord, subject 等
} catch (Exception e) {
System.out.println("載入郵件配置失敗: " + e);
}
}
// 此處省略發送郵件的核心方法 sendMail(...)
// 通常包含:建立 Session、建立 MimeMessage、設定收件人/主旨/內容、Transport.send()
}
ExtendString.CS() 解決中文參數在不同編碼間轉換問題(ISO-8859-1 → GBK)。MailServer.properties 管理 SMTP 主機、帳號、密碼等敏感資訊,避免硬編碼。Session → 建立 MimeMessage → 設定寄件人、收件人、主旨、內容(支援純文字/HTML/附件) → Transport.send()。mail.smtp.socketFactory.class)、多附件、內嵌圖片、優先級設定等。SmtpHost=smtp.example.com
Sender=sender@example.com
User=your_username
PassWord=your_password
Subject=測試郵件
此範例展示了 JavaMail 基礎發送架構,實際專案建議加入例外處理、重試機制、連線池管理與非同步發送佇列。