在C#中實現SMTP郵件的定時發送,可以使用System.Net.Mail命名空間中的SmtpClient類和MailMessage類。以下是一個示例代碼,演示如何實現在指定時間發送郵件:
using System;
using System.Net;
using System.Net.Mail;
using System.Threading;
class Program
{
static void Main()
{
// 設置SMTP服務器和端口
SmtpClient client = new SmtpClient("smtp.example.com", 587)
{
Credentials = new NetworkCredential("your_email@example.com", "your_password"),
EnableSsl = true
};
// 創建郵件消息
MailMessage message = new MailMessage("your_email@example.com", "recipient@example.com", "Subject", "Body");
// 設置發送時間
DateTime sendTime = new DateTime(2022, 1, 1, 12, 0, 0);
// 計算延遲時間
TimeSpan delay = sendTime - DateTime.Now;
// 創建定時器
Timer timer = new Timer((state) =>
{
// 發送郵件
client.Send(message);
Console.WriteLine("Email sent at: " + DateTime.Now);
}, null, (int)delay.TotalMilliseconds, Timeout.Infinite);
// 等待郵件發送完成
Console.ReadLine();
}
}
在此示例中,我們首先創建了一個SmtpClient實例,指定SMTP服務器地址、端口和憑據。然后創建一個MailMessage實例,設置發件人、收件人、主題和正文。接下來設置發送時間,并根據當前時間和發送時間計算出延遲時間。最后創建一個定時器,在指定的延遲時間后發送郵件。
請注意,上述示例中的發送時間是固定的,你可以根據需要修改發送時間。另外,確保在發送郵件之前替換示例中的SMTP服務器地址、發件人郵箱、收件人郵箱和發件人郵箱的密碼。