ASP发送重复的电子邮件

时间:2011-08-08 14:50:54

标签: asp-classic

我正在ASP网站上做一些维护,并发现它正在发送重复的电子邮件。我无法弄清楚它是如何做到这一点的。我在这里粘贴了代码 http://pastebin.com/Beb94PiC

第443行是SendMsg2函数。据我所知,该功能只被调用一次。任何提醒或消息都只出现一次。

发送电子邮件时,objMessage.TO = email1会出现一次,然后不会出现在任何第二封电子邮件中。我认为无论是什么使它运行两次也清除变量。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您的功能名为“SendMsg2”,但在第478行中您设置了

SendMsg = objMessage.Send

当功能 SendMsg 存在时,也许会产生一些副作用。

答案 1 :(得分:0)

副手,我没有看到任何明显的东西,我可以简单地指责帮助。解决ASP问题的最佳方法是两种途径之一:

  1. 将逻辑封装在VB COM组件中
  2. 使用Response.Write
  3. 就个人而言,VB COM对遗留应用程序来说是一个很大的开销。虽然它允许更好的仪器,但您必须编写大量代码。除非应用程序的保质期比目前应该长得多,否则不是最好的选择。离开#2。

    Response.Write进入和退出每个例程。然后,您可以看到打印出来的流程,并确定第二次调用邮件例程的位置。如果没有做任何事情,那么可能是用户不止一次点击该按钮(不耐烦的用户)。如果是后者,则应禁用按钮。

    跟踪事物的一种方法是在混音中添加“会话ID”。重构邮件例程以接受id值,然后你可以编码“如果会话ID然后不发送电子邮件”到混合中。在第一封电子邮件发送完毕后,ID会被存储,任何其他调用都会在混合中看到该ID。我说会话ID在引号中,因为你们都必须使用会话的概念和初始流的概念来涵盖用户错误(点击多次)和代码流错误。如果您可以在一个会话中发送多封电子邮件,则需要在混合中保留某种类型的“我在此会话中发送此电子邮件”值,这样您就不会添加不发送电子邮件的错误。

    您应该花时间纠正流程并纠正用户错误。但是先花点时间进行故障排除,这样就可以看出是否还有其他工件。仅在经典的ASP代码中,这意味着将值写入Response流(如此粗糙,就像手动割草机一样?)。