我需要發送不同的電子郵件給不同的人。爲每個收件人生成不同的電子郵件正文,然後我調用以下方法。也就是說,如果有10個收件人,下面的方法被稱爲10倍:如何加快發送電子郵件?
public int Send_Mail(string send_from_bc, string send_to_bc, string subject_bc, string body_bc)
{
try
{
int count_returned = 0;
var send_from = new MailAddress(send_from_bc, "The Admin");
var send_to = new MailAddress(send_to_bc);
string subject = subject_bc;
string body = body_bc;
var smtp = new SmtpClient
{
Host = "**my smtp host**",
Port = 25,
DeliveryMethod = SmtpDeliveryMethod.Network,
Timeout = 300000
};
using (var message = new MailMessage(send_from, send_to)
{
Subject = subject,
Body = body
})
{
message.IsBodyHtml = true;
smtp.Send(message);
count_returned += 1;
}
return count_returned;
}
catch (Exception ex)
{
throw new Exception("Exception caught in Send_Mail", ex);
}
}
的問題是,該走的時候了難以置信的,甚至派幾個郵件(如10級或15的郵件)。大約需要2-5分鐘才能發送一封郵件。現在,我確信部分提供給我的SMTP主機有問題。但是我能做些什麼來加快速度?
此外,有沒有一些方法來實現這一目標:眼下,用戶點擊一個按鈕,然後說,發送兩封郵件,他/她必須等待2-5分鐘(有時甚至更多)之前控制返回並且標籤的值更改爲「發送的電子郵件」。可以做些什麼,以便用戶只需點擊按鈕,發送電子郵件,他/她可以關閉窗口並繼續他的工作?
我現在處於關鍵階段,任何幫助將不勝感激。
那麼.. SMTP服務器是不是在我的控制。不過,我會盡力找出最新的錯誤。還有什麼可以優化我的代碼發送多個電子郵件? –
如果您要發送多封郵件,最好讓所有電子郵件都保持「連接」狀態。話雖如此,我沒有看到你的連接初始化的位置。 – Bob2Chiv
嗯..謝謝。該connection.Close()部分不是必需的。我在我的代碼中刪除它。順便說一下,通過不爲每封郵件創建新的SmtpClient對象,我減少了將郵件從大約2-5分鐘發送到30-40秒的時間。現在,我創建一次併爲每個郵件使用同一個對象。 無論我發送1封郵件還是10封郵件,現在需要30-40秒。所以我猜這一切都歸結到SMTP服務器現在.. –