c# – 使用Office 365的极慢的SmtpClient

c# – 使用Office 365的极慢的SmtpClient,第1张

概述我正在研究MVC5网站.本网站包含“联系我们”表格,用户可以联系网站支持. 问题是SendMailAsync至少需要10-13秒才能完成(没有附件),并且在此过程运行时,用户会卡住并等待来自服务器的响应 – 无论电子邮件是否成功发送. 这是我当前的ActionResult方法: [HttpPost]public async Task<ActionResult> Contact(MessageMo 我正在研究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服务器的设置细节,因为我没有参与,但如果你不想依赖异步,可能需要考虑一下.

总结

以上是内存溢出为你收集整理的c# – 使用Office 365的极慢的SmtpClient全部内容,希望文章能够帮你解决c# – 使用Office 365的极慢的SmtpClient所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1227165.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存