2014-11-14 162 views
1

我想用計時器自動發送電子郵件。下面給出的代碼是我用來發送電子郵件的。但它沒有迴應。在按鈕點擊事件下使用相同的代碼時,它的工作非常完美。幫助我找到一個合適的解決方案。謝謝。如何自動發送電子郵件

代碼:

namespace AlertMail 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void timer1_Tick(object sender, EventArgs e) 
     { 
      MailMessage loginInfo = new MailMessage(); 
      string em = "[email protected]"; 
      loginInfo.To.Add(em.ToString()); 
      loginInfo.From = new MailAddress("[email protected]"); 
      loginInfo.Subject = "Alert Information"; 

      loginInfo.Body = "Hai"; 
      loginInfo.IsBodyHtml = true; 
      SmtpClient smtp = new SmtpClient(); 
      smtp.Host = "smtp.gmail.com"; 
      smtp.Port = 587; 
      smtp.EnableSsl = true; 
      smtp.Credentials = new System.Net.NetworkCredential("[email protected]", "Password"); 
      smtp.Send(loginInfo); 
      label6.Text = "Alert is send to your email..!!"; 
     } 
    } 
} 
+2

那麼,如果代碼工作正常,也許計時器未啓用?你是否在事件中設置了斷點並驗證它正在運行?另外,你不需要在字符串上調用'.ToString()'(你在'em'上執行這個操作)。 –

+0

@RufusL:謝謝。沒有它的工作,實際上定時器被禁用,所以它不工作。 – Vipin

回答

2

在許多Web應用程序,我們需要發送時間表(自動),電子郵件和我們安排他們。 像:

  1. 發送定期
  2. 電子郵件發送的消息在每天,每週,每月或每年的間隔。

爲此,我們通常使用windows服務或windows應用程序。

正如我們所知道的Web服務器IIS繼續地運行,我們就可以在應用程序中添加一個計時器,當我需要運行的時間表上的東西,定時器可以管理所有這些活動

//Inside Global.ascx 
     void Application_Start(object sender, EventArgs e) 
    { 
     // Code that runs on application startup 
    System.Timers.Timer myTimer = new System.Timers.Timer(); 
     // Set the Interval to 5 seconds (5000 milliseconds). 
    myTimer.Interval = 5000; 
    myTimer.AutoReset = true; 
    myTimer.Elapsed += new ElapsedEventHandler(myTimer_Elapsed); 
    myTimer.Enabled = true; 
    } 

public void myTimer_Elapsed(object source, System.Timers.ElapsedEventArgs e) 
{ 
    // use your mailer code 
    clsScheduleMail objScheduleMail = new clsScheduleMail(); 
    objScheduleMail.SendScheduleMail(); 
} 

// inside your class 
public void SendScheduleMail() 
{ 
    // Write your send mail code here. 
} 
0

一般Windows服務器,我使用計劃任務。您可以將電子郵件作爲控制檯應用程序編寫,將其保存到服務器上的某個位置,然後讓計劃的任務在給定的時間間隔內運行應用程序。我不知道你正在運行的Windows版本,但這些說明適用於Windows 2008,Windows 8中,和Windows 2012:

http://technet.microsoft.com/en-us/library/cc725745.aspx