我需要通过经典asp应用程序上的后台作业发送电子邮件,这样用户就不必等待慢速网络服务器完成发送电子邮件。
我知道我可以使用Ajax生成两个单独的请求,但我宁愿不要求Javascript。另外,我怀疑有更好的办法解决这个问题。想法?
答案 0 :(得分:11)
你的想法太狭隘了。您不必从ASP发送电子邮件。将它放入一个数据库,然后有一个单独的程序,例如每分钟运行一次,并发送数据库中的所有电子邮件。
答案 1 :(得分:3)
我同意tomjen的观点。将电子邮件保存在数据库表中,然后使用后端进程实际发送电子邮件非常有效,尤其是在您发送大量电子邮件时。我建议使用Perl来做后端邮件,因为有几个软件包可以很容易地完成工作。
答案 2 :(得分:2)
有3rd party COM objects你可以比IIS内置的更好地处理邮件。您只需关闭消息并处理队列,以便程序立即获得控制权。
答案 3 :(得分:2)
Persits生成着名的AspEmail COM组件,该组件随邮件排队系统一起提供,可以满足您的需求。
http://www.aspemail.com/manual_07.html
您的代码实际上是将消息发送到在服务器上运行的队列守护程序,并在单独的进程中发送队列中的所有邮件,从而不会阻止您的ASP脚本完成其执行。
答案 4 :(得分:1)
很抱歉,但据我所知,没有办法使用旧的ASP生成单独的线程。
如果你不想要AJAX隐藏的IFRAME呢?丑陋但它有效...
答案 5 :(得分:1)
如果您不想使用我的其他建议,您可能需要考虑运行另一个程序,该程序只发送电子邮件,然后通过COM或(本地)tcp套接字与此程序通信。这应该比通过互联网连接到服务器快得多,并且避免了使用数据库的延迟。
答案 6 :(得分:0)
加快这种速度的一个好方法是指示CDOSYS使用Web服务器的IIS拾取目录(通常是c:\ inetpub \ mailroot \ pickup)。假设您的Web服务器已安装SMTP虚拟服务器。
另一个类似但更快的选择是手动生成* .EML文件并将它们放在拾取目录中。另外,为避免可能的冲突,您可以将文件放在临时目录中,然后让批处理文件以一定的间隔将它们移动到拾取目录。