从 asp.net 页面发送电子邮件的最佳方式是什么?
我不是指实际发送消息的代码,我的意思是,例如,在我的应用程序中,丢失的密码链接会在单击按钮时向用户发送一封电子邮件,但如果 smtp 服务器需要 10 秒来发送消息,用户将等待页面加载 10 秒。
你会建议什么来避免这种情况?
谢谢!
asynch send 不会在 asp.net 工作线程上工作(尝试一下 - 它会引发异常),因此要么生成辅助线程,在弹出窗口中发送电子邮件,要么让用户等待。
真的需要10秒吗?我从来没有见过它需要超过1...
我从来没有这样做过,但是在我的脑海中,我建议开发一个与您的网站分开的后台进程。此过程扫描数据库表以查找电子邮件地址;每当找到新地址时,它都会向该地址发送一封确认电子邮件,然后将其从列表中删除。
同时,每当用户提交您的 ASP.NET 表单时,他们的电子邮件都会添加到同一个数据库表中。
因此,您已取消同步电子邮件发送。
有关创建后台进程的一些一般信息:
通过对 Web 服务的 Ajax 调用调用电子邮件发送。或者,您可以在 SmtpClient 类上使用异步发送方法
在单独的线程或进程中处理电子邮件和其他长时间运行的进程是很常见的。使用消息队列系统或常规后台批处理类型进程非常容易设置。
话虽如此,我认为您还应该考虑 ckramer 提到的异步方法。
另一种选择是拥有一个本地 SMTP 服务器。
为所有外发邮件创建一个数据库并在另一个线程中处理它。