2010-09-28 50 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事件的回调函数。这可能就是这里所缺少的。