我想知道是否在asp.net c#中以異步方式發送電子郵件。我用下面的代碼來發送電子郵件:在ASP.NET C中異步發送電子郵件#
if (checkObavijest.Checked)
{
List<hsp_Kupci_Newsletter_Result> lista = ServisnaKlasa.KupciNewsletter();
for (int i = 0; i < lista.Count; i++)
{
MailMessage mail = new MailMessage();
mail.From = new MailAddress("*******");
mail.To.Add(lista[i].Email);
mail.Subject = "Subject";
mail.SubjectEncoding = Encoding.UTF8;
mail.BodyEncoding = Encoding.UTF8;
mail.IsBodyHtml = true;
mail.Priority = MailPriority.High;
mail.Body = "Some message";
SmtpClient smtpClient = new SmtpClient();
Object state = mail;
smtpClient.Credentials = new NetworkCredential("****@gmail.com", "****");
smtpClient.Port = 587;
smtpClient.Host = "smtp.gmail.com";
smtpClient.EnableSsl = true;
smtpClient.SendCompleted += new SendCompletedEventHandler(smtpClient_SendCompleted);
try
{
smtpClient.SendAsync(mail, state);
}
catch (Exception ex)
{
}
}
void smtpClient_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
MailMessage mail = e.UserState as MailMessage;
if (!e.Cancelled && e.Error != null)
{
string poruka = "Emailovi poslani!";
ClientScript.RegisterStartupScript(this.GetType(), "myalert", "alert('" + poruka + "');", true);
}
}
但是,當我打勾的選項用於發送電子郵件,頁面負載,如40秒,然後40秒後的電子郵件發送即可。正如你所看到的,我正在從我的數據庫中抽出20-30封電子郵件。我認爲這是異步發送郵件的正確方式,但顯然它不是......我如何將電子郵件發送到另一個線程,以免影響正在使用此頁面的用戶?有人可以幫我解決這個問題嗎?謝謝 !
我試試看,但爲什麼你聲明sendviathread函數爲布爾,爲什麼不能void# – perkes456 2014-11-22 14:35:14
哦..那是我的代碼在我的一個項目中..我正在做更多的工作,並返回一個布爾值來表示問題,你並不真的需要這個,謝謝指出,我會刪除那部分。 – Abhitalks 2014-11-22 14:37:59
你能更具體怎麼樣我把它建成我現有的代碼?我真的不知道我應該在這裏做什麼... – perkes456 2014-11-22 14:52:35