需引入 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() 即可。下一篇將補充如何自定義郵件內容模板。