2010-09-28 67 views
2

我想發送電子郵件異步,所以它不會減慢我的前端(Asp.Net MVC)。來自.Net的異步電子郵件

SmtpClient smtp = new SmtpClient(_mailServer, 25); 
smtp.UseDefaultCredentials = true; 
MailMessage message = new MailMessage(); 

// ...etc 

smtp.SendA(message); // this works fine 

smtp.SendAsync(message, null); // if i change it to this, it doesn't work (mail never appears) 

我真的不知道第二個參數是SendAsync的用途。

MSDN說,它的一個目的是傳遞給該方法,當操作完成

以及被調用,跆拳道?什麼方法?所以我只是嘗試傳遞null,因爲我不明白這是什麼,但顯然有些錯誤。

+0

什麼方法? SendComplete事件。如果您尚未註冊SendComplete方法,則不會發生任何情況。傳遞null是好的。這正是一些狀態信息,它告訴你已經註冊的任何方法來發送它可能需要知道的任何信息。無論什麼信息取決於您,因爲它是您的SendComplete方法。 – 2010-09-28 16:00:30

回答

2

本質上,它是您希望在發送完成事件中傳遞的對象。

當您使用SendAsync時,會發生SendCompleted事件。然後處理該事件,以便知道您可以發送另一封電子郵件。主要原因是因爲您一次只能發送一封電子郵件。

0

您是否爲SendCompleted事件設置了事件處理程序?在SmtpClient.SendAsync的MSDN示例中,userState只是一個字符串,但它們具有分配給SendCompleted事件的回調函數。這可能就是這裏所缺少的。