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

JavaMail 發送郵件完整範例:支援中文編碼與屬性配置

     編輯:Java 程式設計入門

完整程式碼

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()。
  • 擴充性:可加入 SSL/TLS 支援(mail.smtp.socketFactory.class)、多附件、內嵌圖片、優先級設定等。

MailServer.properties 範例

SmtpHost=smtp.example.com
Sender=sender@example.com
User=your_username
PassWord=your_password
Subject=測試郵件

此範例展示了 JavaMail 基礎發送架構,實際專案建議加入例外處理、重試機制、連線池管理與非同步發送佇列。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved