首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C# 實現每日定時發送郵件的簡單方案

     編輯:程式設計疑難解答

需求

小程式僅含發送郵件功能,需每天自動執行一次,發送功能已實現。

方案一:Windows Service + Timer(推薦生產環境)

public partial class MailService : ServiceBase {
    private System.Timers.Timer _timer;
    protected override void OnStart(string[] args) {
        _timer = new System.Timers.Timer(24 * 60 * 60 * 1000); // 24小時
        _timer.Elapsed += (s, e) => SendMail();
        _timer.AutoReset = true;
        _timer.Start();
        // 可選:啟動時立即執行一次
        // SendMail();
    }
    private void SendMail() { /* 你的發郵件代碼 */ }
    protected override void OnStop() { _timer?.Stop(); _timer?.Dispose(); }
}

安裝服務:`installutil YourService.exe`,設定為自動啟動。

方案二:Windows 任務排程器(最簡單)

  1. 將發郵件邏輯封裝為 Console Application(`MailSender.exe`)。
  2. 打開「任務排程器」→「建立基本任務」→ 觸發器選「每天」→ 指定時間(如凌晨 3 點)。
  3. 動作選「啟動程式」,瀏覽選擇 `MailSender.exe`。
  4. 完成。無需編寫服務代碼,系統級可靠性高。

方案三:應用程式內部 Timer(僅適用於長期運行的桌面程式)

// WinForm/WPF 啟動時
var timer = new System.Windows.Forms.Timer();
timer.Interval = 24 * 60 * 60 * 1000;
timer.Tick += (s, e) => SendMail();
timer.Start();

缺點:程式關閉即停止,不適合伺服器端任務。

建議

個人/小專案首選 任務排程器 + Console App,部署簡單、無需服務管理;企業級服務用 Windows Service 或 Quartz.NET 排程框架。

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