【问题标题】:Email from ASP Forum Website来自 ASP 论坛网站的电子邮件
【发布时间】:2017-02-14 05:18:56
【问题描述】:

我在这里不知所措。我正在编写一个论坛,当有人回复他们参与的主题时,用户将能够通过电子邮件收到通知。因此,用户 A、B 和 C 都在主题上处于活动状态,并希望在出现时收到通知是一个帖子。当用户 D 出现并在线程中发帖时,我需要向 A、B 和 C 发送电子邮件。

我通常使用 CDO (ASP Classic) 发送电子邮件,但问题是,当我需要发送给用户 A 到 Z 或更多用户时会发生什么?

用户 D 出现,点击 POST,然后我将文本写入数据库并开始发送电子邮件——他必须等到它们发送完毕。

显然,这不是处理这个问题的方法。但我完全不知道在这里实施什么。第三方?一个组件?有没有办法让这个在后台运行?我做过很多网站,但从来没有做过这样的电子邮件。

任何方向都会非常感激。

【问题讨论】:

  • 您将其标记为 ASP.NET,但提到使用 ASP Classic 的组件。这是 ASP.NET,还是纯粹的 ASP Classic
  • 赞成取消不必要的反对票的影响。 :-)

标签: email asp-classic


【解决方案1】:

ASP Classic 无法执行您所询问的并行操作或“后台操作”。您必须模拟它,使您的电子邮件发送更快,或者使用计划任务执行电子邮件功能。

模拟:

  1. 执行所有数据库事务(例如,将用户 D 的帖子保存到您的数据库中)

  2. 在用户 D 看到的下一页上,使用 JavaScript 标记启动对 ASP 文件的调用。调用的 ASP 文件应该发送电子邮件,例如

    <script type="text/javascript" async defer src="my_emailer.asp?postID=XXX"></script>
    

您使用script 方法的原因是因为它会被用户 D 在 POST 后被定向到的页面异步调用。

加快速度

只创建和发送一封电子邮件,但密件抄送其他收件人。

作为计划任务运行

点击此处获取提示:Make server automatic run asp-script every day

【讨论】:

  • ASP Classic 指的是别的东西。当您指的是 ASP.NET 或 ASP.NET Web 窗体时,请不要指 ASP Classic。
  • 我的意思是指 ASP Classic。根据我收集到的信息,OP 说他有一个 ASP Classic 脚本,需要一个 ASP Classic 解决方案。
  • 是的。我正在使用 ASP 经典。谢谢你。 javascript 解决方案的唯一问题是,如果用户 D 没有转到另一个页面怎么办。我认为在这种情况下调度程序可能是更好的选择。有一个 asp compent - ASPMail by Persists 软件,它有消息队列。我认为这可能是我需要的——但还不能 100% 确定。发送一封带有其余密件抄送的电子邮件是否有效? BCC的数量有限制吗?它是否更有可能被视为垃圾邮件?我想垃圾邮件问题是无关紧要的,因为这些都是注册用户,并且过去至少会收到 1 封电子邮件。
  • 用户 D POST 时是否浏览器会将他带到不同的页面,或者他的文本是否异步 POST?
  • 它是异步发布的。
【解决方案2】:

我在我的经典 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 脚本,它可以执行您需要它执行的任何操作。在我的例子中,它查询数据库以找到需要向其发送电子邮件的客户,然后发送它们。它有一些合理的超时值,但如果它在完成之前用完时间,它会在下次运行时从中断的地方继续。

【讨论】:

    猜你喜欢
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    • 2018-05-23
    • 2015-03-08
    • 2022-11-10
    相关资源
    最近更新 更多