2010-05-19 53 views
2

我使用ASP.NET Web表單,如何在AsP.NET的後臺發送電子郵件?

當用戶提交一個頁面,電子郵件將被髮送到其減緩後回多人,

是什麼派的最佳方式電子郵件沒有減慢重新加載頁面?

感謝

+0

你使用哪個版本的.Net? 4.0的答案將不同於3.5。 – 2010-05-19 02:35:32

+0

在我的電腦上是4.但我需要3.5 – Bart 2010-05-19 03:19:21

回答

7

可以使用System.Net.Mail.SmtpClient類發送使用SendAsync()方法的電子郵件。

var smtpClient = new SmtpClient(); 
var message = new MailMessage(fromAddress, toAddress, subject, body); 
smtpClient.SendCompleted += new SendCompletedEventHandler(OnSendCompletedCallback); 
smtpClient.SendAsync(message, null); // Null Or pass a user token to be send when the send is complete 

如果你需要處理異步發送後執行一些附加的東西是完整的,你可以訂閱SendCompleted事件SmtpClient的爲好。

private void OnSendCompletedCallback(object sender, AsyncCompletedEventArgs e) 
{ 
    // Handle the callback if you need to do anything after the email is sent. 
} 

Here是MSDN文檔的鏈接。

2

我發現,除非您構建一個非常小的網站,否則從單獨的Windows服務發送郵件幾乎總是最好的。

例如,您的Web前端記錄要在數據庫中發送的郵件。這有一個很好的副作用,允許你也開發一個發送的文件夾,發件箱等您的Windows服務輪詢郵件表,並進行實際發送。

發送郵件可能會導致很多異常,可能會很慢,可能會超時,主機進程已收割等。在許多情況下在後臺處理它很有意義。

以下是關於Windows Services的更多信息。

+0

其實它是一個小網站,謝謝小費 – Bart 2010-05-19 03:43:38