我有一个控制器发送一封电子邮件,并向我的ajax脚本返回“success”json响应。从控制器发送电子邮件时发生延迟
控制器看起来是这样的:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult EmailSend(string input1)
{
EmailSignup person = new EmailSignup { emailhasbeensent = false, Email = input1 };
try
{
SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
client.EnableSsl = true;
client.UseDefaultCredentials = false;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.Credentials = new NetworkCredential("Email", "PW");
MailMessage message = new MailMessage();
message.From = new MailAddress("Email");
message.To.Add(person.Email);
message.Subject = "Thank you for subscribing";
message.Body = "You have now subscribed for our newsletter";
message.IsBodyHtml = true;
client.Send(message);
person.emailhasbeensent = true;
return Json(new { status = "success" });
}
catch (Exception ex)
{
return Json(new { status = "error" });
}
}
不幸的是,成功的响应之前延迟发送,这意味着其电子邮件正在进入排序的页面“空转”它接收到的前成功的回应。
有没有办法加快这个过程,以便立即发送响应? 如果没有,那么是否可以实施一个加载条,向用户显示“幕后”发生了什么?
感谢您的回答!基本上,如果我将Sendemail代码移动到另一个方法,那么我的代码会不会失败,一旦生活就会失败?据我了解,我通过这样做防止了瓶颈? –