c# – 使用Office 365的极慢的SmtpClient
发布时间:2020-12-15 21:05:14 所属栏目:百科 来源:网络整理
导读:我正在研究MVC5网站.本网站包含“联系我们”表格,用户可以联系网站支持. 问题是SendMailAsync至少需要10-13秒才能完成(没有附件),并且在此过程运行时,用户会卡住并等待来自服务器的响应 – 无论电子邮件是否成功发送. 这是我当前的ActionResult方法: [HttpP
我正在研究MVC5网站.本网站包含“联系我们”表格,用户可以联系网站支持.
问题是SendMailAsync至少需要10-13秒才能完成(没有附件),并且在此过程运行时,用户会卡住并等待来自服务器的响应 – 无论电子邮件是否成功发送. 这是我当前的ActionResult方法: [HttpPost] public async Task<ActionResult> Contact(MessageModel Model) { //... await SendMessage(Model); //... return View(); } 这是我负责发送电子邮件的方法: private async Task SendMessage(MessageModel Model) { var Message = new MailMessage(); Message.From = ...; Message.To.Add(...); Message.Subject = ...; Message.IsBodyHtml = true; SmtpClient Client = new SmtpClient(); Client.UseDefaultCredentials = false; Client.Credentials = ...; Client.Port = 587; Client.Host = "smtp.office365.com"; Client.DeliveryMethod = SmtpDeliveryMethod.Network; Client.EnableSsl = true; await Client.SendMailAsync(Message); } 有没有更快的工作替代品?我可以像这样运行它: await Task.Factory.StartNew(() => SendMessage(Model)); 该网站不会“卡住”13秒,响应将是即时的,但是,我无法向用户提供有关电子邮件是否成功发送的信息. 解决方法
我们最近遇到了类似的问题,每个电子邮件发送一次事件,每个电子邮件需要4-5秒,我们需要发送多个不同的内容.客户的IT人员能够获得.protection.outlook.com:25服务器接受在同一域上运行的非ssl流量,并且花费的时间为1-1.5秒.这对于客户端而言足够快,其中一些UI显示我们正在处理.我们还尝试了本地服务器,它只有大约100毫秒,但他们不希望在他们的DC上运行该电子邮件服务.
我不能谈论这个.protection.outlook.com服务器的设置细节,因为我没有参与,但如果你不想依赖异步,可能需要考虑一下. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |