使用SMTP是否明智?asp.net中的SendAsync

本文关键字:asp net 中的 SendAsync SMTP 是否 使用 | 更新日期: 2023-09-27 18:16:46

我正在编写一个代码,将2个代码发送到2个不同的电子邮件(检查这两个电子邮件的所有者是同一个人)。我得到了错误:

系统。InvalidOperationException:异步调用已经在进行中。它必须在调用此方法之前完成或取消。

我可以简单地避免在发送第一封邮件后发送第二封邮件的错误,但问题是,如果有这么多用户同时请求发送邮件(忘记密码、更改邮件、注册等),会造成问题吗?或者只有当它们在同一页面上重复执行时才会出现此错误?

提前感谢,
Ashkan

使用SMTP是否明智?asp.net中的SendAsync

SendAsync方法的目的不是阻塞调用线程;但是,您必须等待SendAsync方法完成,然后才能在同一个SmtpClient实例上发送新电子邮件。换句话说,创建2个实例,每个实例对应一个电子邮件,如果需要,可以异步发送它们。

从MSDN:

调用SendAsync后,必须等待电子邮件传输到在尝试使用send发送另一封电子邮件之前完成非同步。

正如Icarus指出的那样,您必须等待SendAsync完成后才能在同一实例上调用它。除此之外,有可能出现ThreadPool饥饿,但是您的里程将根据您的实现而有所不同。在内部,SendMailAsync使用ThreadPool线程执行任务。如果它只是一个电子邮件,我不会担心。

否单独的实例不会成为问题。如果许多用户同时发送请求,它们将是不同的实例。