描述 :
我正在从MVC应用程序发送电子邮件,当我将其发送给一个人时,邮件已成功发送,但是当我向多个人发送邮件时,出现异常,即操作超时。
因此,为了避免这个问题,我正在尝试使用smtpclient。SendAsync(消息,对象(方法,但我收到一个异常,即异步模块或处理程序在异步操作仍处于挂起状态时完成。
如何解决这个问题?
法典:
public async Task<string> SendEmail(List<string> ToEmailAddresses,string body, string emailSubject)
{
var smtp = new SmtpClient
{
DeliveryMethod = SmtpDeliveryMethod.Network,
Host = "xyz-host-name",
Port = 25,
EnableSsl = false,
Timeout = 600000
};
var fromAddress = new MailAddress(ConfigurationManager.AppSettings["MailUserName"], "Rewards and Recognition Team");
using (var message = new MailMessage() { Subject = emailSubject, Body = body })
{
message.From = fromAddress;
foreach (string email in ToEmailAddresses)
{
message.To.Add(email);
}
message.IsBodyHtml = true;
try
{
_logger.Log("EmailService-SendEmail-try");
object userToken = message;
smtp.SendAsync(message,userToken);
return "Success";
}
catch (Exception ex)
{
_logger.Log("EmailService-SendEmail-" + ex.Message);
return "Error";
}
}
}
您必须在ActionResult中使用await关键字(控制器端(
喜欢
public async task<ActionResult> SendMail(object obj)
{
var result = await SendEmail(ToEmailAddresses,body,emailSubject)
return result
}