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

Java 簡易郵件發送實作:動態收件人管理與 JOdd 郵件庫整合

     編輯:MySQL 綜合教學

Java 簡易郵件發送實作:動態收件人管理與 JOdd 郵件庫整合

專案依賴

需引入 JOdd 相關 JAR 包,核心為 jodd-3.7.jar。下載地址:百度網盤 (提取碼: h22x)

工具類:動態讀取收件人清單

透過 emails.txt 檔案動態配置收件人,支援熱更新無需重啟應用。

package quartz;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.*;

public class Util {
    public static final String FORMAT = "HH:mm";
    public static final SimpleDateFormat SDF = new SimpleDateFormat(FORMAT);
    public static String CONTENT = "以下電樁斷網已超過1小時【" + SDF.format(new Date()) + "】";
    public static Date LAST_SEND = null;

    public static List<String> getEmailList() {
        return getList("emails.txt");
    }

    public static List<String> getList(String fileName) {
        try (InputStream is = Util.class.getResourceAsStream(fileName);
             InputStreamReader isr = new InputStreamReader(is);
             BufferedReader br = new BufferedReader(isr)) {
            List<String> list = new ArrayList<>();
            String line;
            while ((line = br.readLine()) != null) {
                if (!"".equals(line.trim())) list.add(line);
            }
            return list;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

郵件發送核心邏輯

public void run() {
    List<String> emails = Util.getEmailList();
    if (emails == null || emails.isEmpty()) {
        System.out.println("no email receiver");
        return;
    }
    
    String from = "********@sina.com";
    String psw = "**********";
    String[] to = emails.toArray(new String[0]);
    
    Email email = Email.create()
        .from(from).to(to)
        .subject("電樁斷網超時提醒")
        .addText(Util.CONTENT);
    
    SmtpServer smtpServer = SmtpServer.create("smtp.sina.com")
        .authenticateWith(from, psw);
    
    SendMailSession session = smtpServer.createSession();
    session.open();
    session.sendMail(email);
    session.close();
    
    System.out.println("--email send success. receivers: " + Arrays.deepToString(emails.toArray()));
}

在需要發送郵件處呼叫 run() 即可。下一篇將補充如何自定義郵件內容模板。

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