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