我在这里不知所措。我正在编写一个论坛,当有人回复他们所涉及的线程时,用户将能够通过电子邮件收到通知。因此,用户A,B和C都在一个线程上处于活动状态,并希望在那里得到通知是一个帖子。当用户D出现并发布到帖子时,我需要向A,B和C发送电子邮件。
我通常使用CDO(ASP Classic)发送电子邮件,但问题是,当我需要发送给用户A到Z或更多时会发生什么?
用户D出现,点击POST,然后我将文本写入数据库并开始发送电子邮件 - 他必须等到它们被发送。
显然,这不是解决这个问题的方法。但我完全不知道在这里实施什么。第三方?一个组件?有没有办法在后台运行?我做了很多网站,但从来没有像这样做过电子邮件。
任何方向都会非常感激。
答案 0 :(得分:0)
ASP Classic无法执行并行操作或"后台操作"像你一样询问。您必须模拟它,使您的电子邮件发送更快,或使用计划任务执行电子邮件功能。
模拟:
执行所有数据库事务(例如将用户D的帖子保存到数据库中)
在用户D看到的下一页上,使用JavaScript标记启动对ASP文件的调用。被调用的ASP文件应该发送电子邮件,例如
<script type="text/javascript" async defer src="my_emailer.asp?postID=XXX"></script>
您使用script
方法的原因是因为它会在POST后指向用户D的页面异步调用。
加快
仅创建和发送一封电子邮件,但与其他收件人进行BCC。
要作为预定任务运行
点击此处的帖子获取提示:Make server automatic run asp-script every day
答案 1 :(得分:0)
我的经典ASP网站上有一个计划任务,每小时运行一次,并出于各种原因发送电子邮件。效果很好。
我安排批处理文件按照我想要的时间表运行。批处理文件有一行如下所示:
"C:\path\XMLRequester.vbs" http://example.com/SendFollowUpEmails.asp
XMLRequester.vbs是一个请求ASP脚本的小脚本,导致它执行:
' Simpler XML Requester
On Error Resume Next
dim shell
Set shell = CreateObject("WScript.Shell")
Dim objXML, strURL
' Request URL from 1st Command Line Argument. This is
' a nice option so you can use the same file to
' schedule any number of differnet scripts just by
' changing the command line parameter.
strURL = WScript.Arguments(0)
Set objXML = CreateObject("Microsoft.XMLHTTP")
objXML.Open "GET", strURL, False
objXML.Send
if Err.Number <> 0 then
shell.LogEvent 1, "Error " & Err.Number & " (" & Err.Description & ")"
end if
Set objXML = Nothing
Set shell = Nothing
SendFollowUpEmails.asp只是一个ASP脚本,可以完成您需要它做的任何事情。在我的例子中,它查询数据库以找到发送电子邮件所需的客户,然后发送它们。它有一些合理的超时值,但如果它在完成之前耗尽时间,它将在下次运行时从它停止的地方开始。