2014-10-31 33 views
0

以下代碼每3分鐘發送一次郵件。但我想每天晚上8點只發送一次郵件。如何在下面的代碼中進行設置。使用Windows服務每天晚上8點發送郵件

我是新來的Windows服務,所以幫助我。我使用Visual Studio 2010

public partial class Scheduler : ServiceBase 
{ 
    System.Timers.Timer createOrderTimer; 
    private Timer timer1 = null; 
    public Scheduler() 
    { 
     InitializeComponent(); 
    } 

    protected override void OnStart(string[] args) 
    { 
     System.Timers.ElapsedEventHandler(this.timer1_Tick); 

     createOrderTimer = new System.Timers.Timer(); 
     createOrderTimer.Elapsed += new System.Timers.ElapsedEventHandler(GetMail); 
     createOrderTimer.Interval = 180000; 
     createOrderTimer.Enabled = true; 
     createOrderTimer.AutoReset = true; 
     createOrderTimer.Start(); 
    } 

    private void timer1_Tick(object sender, ElapsedEventArgs e) 
    { 
     Library.WriteErrorLog("Timer Ticked and some job has been done successfully"); 
    } 

    protected override void OnStop() 
    { 
     timer1.Enabled = false; 
     Library.WriteErrorLog("Test Window Service stopped"); 
    } 

    public void GetMail(object sender, System.Timers.ElapsedEventArgs args) 
    { 
     NetworkCredential cred = new NetworkCredential("[email protected]", "abc"); 
     MailMessage msg = new MailMessage(); 
     msg.To.Add("[email protected]"); 
     msg.Subject = "Welcome Venkat"; 

     msg.Body = "You Have Successfully Entered to venkat World!!!"; 
     msg.From = new MailAddress("[email protected]"); // Your Email Id 
     SmtpClient client = new SmtpClient("smtp.gmail.com", 587); 
     client.Credentials = cred; 
     client.EnableSsl = true; 
     client.Send(msg); 
    } 
} 
+0

這裏是你正在尋找什麼 http://stackoverflow.com/questions/1297109/how -do -i-generate-an-alert-at-a-specific-time-in-c – Zeeshan 2014-10-31 09:31:26

回答

0

你發送郵件每三分鐘。如果時間是每分鐘8點,你爲什麼不控制,如果是的話,發送郵件。您可以通過DateTime.Now獲得當前時間。爲了加強您的控制,您可以保留已發送郵件的日誌,並嘗試再次發送,因爲發送可能會失敗。

類似下面,但要知道,這是一個很簡單的例子,可能會導致錯誤:

public void GetMail(object sender, System.Timers.ElapsedEventArgs args) 
{ 
    if (mailSentForToday) 
     return; 

    if (DateTime.Now.Hour < 20) 
     return; 

    NetworkCredential cred = new NetworkCredential("[email protected]", "abc"); 
    MailMessage msg = new MailMessage(); 
    msg.To.Add("[email protected]"); 
    msg.Subject = "Welcome Venkat"; 

    // send the mail  
} 
+0

你能幫助我如何控制時間..我已經寫過這樣但它不工作的字符串OnlyTime = DateTime。 Now.ToString(「HH:mm tt」);如果(OnlyTime ==「20:00 PM」) { createOrderTimer = new System.Timers.Timer(); createOrderTimer.Elapsed + = new System.Timers.ElapsedEventHandler(GetMail); createOrderTimer.Interval = 500; createOrderTimer.Enabled = true; createOrderTimer.AutoReset = true; createOrderTimer.Start(); }' – user2618074 2014-10-31 11:15:17

+0

請參閱我的編輯並讓我知道。 – 2014-11-03 13:17:34

相關問題