ColdFusion每天最多发送5封电子邮件

ColdFusion每天最多发送5封电子邮件,coldfusion,cfmail,Coldfusion,Cfmail,假设我在page.cfm上有以下脚本。每次有人来到page.cfm,都会向我发送一封电子邮件。所以如果有1000人来page.cfm,我会收到1000封电子邮件 <cfmail to="joe@smith.com" from="error@smith.com" subject="Error" type="text"> A person visited. </cfmail> 我想限制它,这样我只会在一天内前5个人访问时收到电子邮件 所以如果今天有两个人来访,我会收到两封电

假设我在page.cfm上有以下脚本。每次有人来到page.cfm,都会向我发送一封电子邮件。所以如果有1000人来page.cfm,我会收到1000封电子邮件

<cfmail to="joe@smith.com"
from="error@smith.com"
subject="Error"
type="text">
A person visited.
</cfmail>
我想限制它,这样我只会在一天内前5个人访问时收到电子邮件

所以如果今天有两个人来访,我会收到两封电子邮件。如果有5个人访问,我会收到5封电子邮件,但如果有100人访问,我仍然只会收到5封电子邮件。然后,如果有两个人访问,只发送了两封电子邮件,但如果有100人访问,只发送了5封电子邮件,那么第二天这个循环就会继续


我怎样才能只用ColdFusion来做呢?如果没有cfschedule,请将访问/电子邮件计数存储在应用程序范围中,并每天通过

在应用程序范围中也存储上次访问日期,以及 添加一些逻辑以重置计数,或

使用cfscheduler每天将计数重置为0


将访问/电子邮件计数存储在应用程序范围中,并每天通过

在应用程序范围中也存储上次访问日期,以及 添加一些逻辑以重置计数,或

使用cfscheduler每天将计数重置为0


我能想到的最简单的方法是在一对应用程序变量中放置一个计数器和一个日期戳

然后,对于每个请求,检查您记录的日期。如果不是今天,请将计数器变量重置为1,并将日期重新设置为今天

然后,在放置cfmail标签的位置,检查计数器是否达到了您的限制。如果没有,请发送邮件。无论哪种方式,递增计数器

在ApplicationStart上的Application.cfc中:

<cfset application.alertDate = now()>
<cfset application.alertCount = 1>
以上主要是为了确保变量在以后使用时存在

在Application.cfc onRequestStart中:

<cfif dateCompare(application.alertDate,now(),"d") EQ -1)>
  <cfset application.alertCount = 1>
  <cfset application.alertDate = now()>
</cfif>
在page.cfm中:

<cfset application.alertCount++>
<cfif application.alertCount LTE 5>
  <cfmail ... >
</cfif>

我能想到的最简单的方法是在一对应用程序变量中放置一个计数器和一个日期戳

然后,对于每个请求,检查您记录的日期。如果不是今天,请将计数器变量重置为1,并将日期重新设置为今天

然后,在放置cfmail标签的位置,检查计数器是否达到了您的限制。如果没有,请发送邮件。无论哪种方式,递增计数器

在ApplicationStart上的Application.cfc中:

<cfset application.alertDate = now()>
<cfset application.alertCount = 1>
以上主要是为了确保变量在以后使用时存在

在Application.cfc onRequestStart中:

<cfif dateCompare(application.alertDate,now(),"d") EQ -1)>
  <cfset application.alertCount = 1>
  <cfset application.alertDate = now()>
</cfif>
在page.cfm中:

<cfset application.alertCount++>
<cfif application.alertCount LTE 5>
  <cfmail ... >
</cfif>

派对迟到了,我还不能对之前的答案发表评论,所以我会这样做。给出的两个答案都可以,但您需要知道,如果应用程序结束,这些应用程序范围变量将消失并重新初始化。如果这对您很重要,您将希望将这些值持久化到某个位置,例如使用getProfileString/setProfileString访问的INI文件可以工作,或者数据库中的一个表。

晚会晚了,我还不能对以前的答案发表评论,所以我将这样做。给出的两个答案都可以,但您需要知道,如果应用程序结束,这些应用程序范围变量将消失并重新初始化。如果它对您很重要,您会希望将这些值持久化到某个位置,例如使用getProfileString/setProfileString访问的INI文件或数据库中的表。

您能使用标准英语吗?这是非常基本的东西。这不是一个偶然的家庭作业,对吗?很抱歉这么简单。这不是家庭作业,这是我网站上的错误处理脚本。当出现错误时,我会被成千上万的电子邮件杀死。我觉得5分钟就足够警觉了。非常感谢您的帮助。应用程序范围是通过应用程序根目录中的application.cfm或application.cfc文件设置的。我添加了一些快速而肮脏的代码。显然,您需要根据需要对其进行修改/扩展。当您打算使用application.alertCount时,您正在检查并增加application.alertDate。您还可以在第一个条件之前添加NOT“StructKeyExistsapplication、alertDate或”,并在Application.cfc中删除对任何代码的需求。这是一个很好的解决方案。你能用标准英语吗?这是非常基本的东西。这不是一个偶然的家庭作业,对吗?很抱歉这么简单。这不是家庭作业,这是我网站上的错误处理脚本。当出现错误时,我会被成千上万的电子邮件杀死。我觉得5分钟就足够警觉了。非常感谢您的帮助。应用程序范围是通过应用程序根目录中的application.cfm或application.cfc文件设置的。我添加了一些快速而肮脏的代码。显然,您需要根据需要对其进行修改/扩展。当您打算使用application.alertCount时,您正在检查并增加application.alertDate。您还可以在第一个条件之前添加NOT“StructKeyExistsapplication、alertDate或”,并在Application.cfc中删除对任何代码的需求。这是一个很好的解决方案
h、 为什么不直接建立谷歌分析?每隔一段时间上网检查一下。如果你不处理这些邮件的话,它们看起来会很讨厌。为什么不直接建立谷歌分析呢?每隔一段时间上网检查一下。如果你不处理这些邮件,它们会很讨厌吗?