异步模块或处理程序已完成,而异步操作仍处于挂起状态



描述 :

我正在从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
}

相关内容

最新更新