我正在尝试在我的 MVC 控制器中使用Postal MVC发送电子邮件。我想异步发送电子邮件,不想在返回视图之前等待发送电子邮件。
这是我正在尝试使用的代码。
try
{
dynamic email = new Email("TestEmail"); //I have an Email View by this name
email.To = "myemailaddress@domain.com";
email.From = "recipientsaddress@domain.com";
email.SendAsync(); //email.Send() works fine
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
但我收到此错误“发送邮件失败”。
内部异常 System.InvalidOperationException:此时无法启动异步操作。异步操作只能在异步处理程序或模块内或在 Page 生命周期中的某些事件期间启动。如果在执行 Page 时发生此异常,请确保 Page标记为 <%@ Page Async="true" %>。在 System.Web.AspNetSynchronizationContext.OperationStarted() 在 System.ComponentModel.AsyncOperation.CreateOperation(Object userSuppliedState,SynchronizationContext syncContext) 在 System.Net.Mail.SmtpClient.SendAsync(MailMessage message,Object userToken)
如果我用 Send() 替换 SendAsync() 它工作正常。
为了完整起见,这就是我的邮件设置在我的 Web.Config 中的样子
<system.net>
<mailSettings>
<smtp deliveryMethod="Network">
<network host="smtp.myisp.com" port="25" defaultCredentials="true" />
</smtp>
</mailSettings>
</system.net>
异步发送电子邮件似乎有问题。有没有其他人提出这个问题并有解决方案?
或者我应该使用像MvcMailer这样的另一个邮件程序吗?
请不要建议我不应该异步发送电子邮件。我希望我的网站能够快速响应,并且我发现在注册过程中连接到电子邮件服务器以发送电子邮件有点无响应。