2014-04-02 45 views
0

我開發的代碼,發送郵件到數據庫的電子郵件ID的發送郵件只有一次在同一時間

這是頁面加載在aspx.cs文件

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     loadEmp_Emailid(); 
    } 
} 

後在loadEmp_Emailid()函數具有波紋管

protected void loadEmp_Emailid() 
{ 
    con.Open(); 
    SqlCommand cmd = new SqlCommand("select email from emailtable", con); 
    SqlDataAdapter da = new SqlDataAdapter(cmd); 
    DataSet ds = new DataSet(); 
    da.Fill(ds); 
    int size_arr = ds.Tables[0].Rows.Count; 
    string[] arr = new string[size_arr]; 
    int i = 0; 
    if (ds.Tables[0].Rows.Count > 0) 
    { 
     foreach (DataRow dr in ds_.Tables[0].Rows) 
     { 
      arr[i] = dr["email"].ToString(); 
      if (dr["email"].ToString() == "") 
      { 

      } 
      else 
      { 
       sendmail(arr[i]); 
      } 
      i++; 
     } 
    } 
    else 
    { 

    } 
} 

上面的代碼本的代碼我得到10個電子郵件ID等

[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
[email protected] 
............. 
.............. 

這裏是發送郵件功能

public void sendmail(string emailTo) 
{ 
    System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient(); 
    smtpClient.Host = "smtp.247headhunting.com"; 
    smtpClient.Credentials = new System.Net.NetworkCredential("[email protected]", "xxxxx"); 
    System.Net.Mail.MailAddress From = new System.Net.Mail.MailAddress("[email protected]", "XXXXXX"); 
    System.Net.Mail.MailMessage Message = new System.Net.Mail.MailMessage(); 
    Message.From = From; 
    Message.To.Add(new System.Net.Mail.MailAddress(emailTo)); 
    Message.Subject = "Subject "; 
    Message.Body = "Testing"; 
    Message.IsBodyHtml = true; 
    try 
    { 
     smtpClient.Send(Message); 
    } 
    catch (Exception ex) 
    { 
    } 
    finally 
    { 
     Message.Dispose(); 
    } 
} 

這裏的問題是每個頁面加載時間將郵件發送...

我不想在送越多則一次不使用網頁加載概念 一天我想自動發送,請給我任何建議,請

感謝 普拉迪普

+1

當你上次發送它們時,只保存在數據庫中。但我有一個問題:如果這是一個預定的操作,爲什麼你在ASP.NET頁面中執行它?不是更好的預定任務?此外不要忘記處理一次性對象(如SQL連接,命令和閱讀器)。 –

+0

我不知道如何開發計劃任務可以請給我建議... Adriano – user3440749

+0

只是一個建議:這是一個好主意,不從表中讀取,而是使用視圖,SP和函數(並阻止訪問表...)。它也將是更好的STUFF項目,並獲得所有郵件地址在一個和一個行。相關的問題,我與@Adriano - 將其存儲在數據庫中... –

回答

0

對於ScheduleTask,首先構建一個簡單的控制檯應用程序,從數據庫加載電子郵件並通過smtpClient發送消息。

比遵循this

我希望它有幫助。

1

不要從ASP.NET頁面執行批處理作業。您可以改用Quartz.NET enterprise scheduler(開源)等專門的調度程序。

你可以看看Quick start guidevarious tutorials

注意:基本的想法是將您的quartz.net服務器作爲windows服務託管在asp.net網站旁邊。託管quartz.net 裏面一個asp.net網站可能是一個壞主意(應用程序池回收的非預測性可能會導致意想不到的行爲)。

+0

+1爲Quartz.NET,而不是重新發明輪子 –

相關問題