ColdFusion每天限制为5封电子邮件

Mik*_*ike 1 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>
Run Code Online (Sandbox Code Playgroud)

我想限制它,所以我只在前一天有5个人访问时收到电子邮件.

因此,如果2人今天访问,我会收到2封电子邮件.如果5人访问我得到5,但如果有100人访问,我仍然只收到5封电子邮件.然后第二天循环继续(如果2人只访问2封电子邮件,但如果有100人只访问5封电子邮件)

我怎么能只用ColdFusion呢?(没有cfschedule)

ale*_*ale 7

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

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

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

在Application.cfc onApplicationStart()中:

<cfset application.alertDate = now()>
<cfset application.alertCount = 1>
Run Code Online (Sandbox Code Playgroud)

(以上主要是为了确保以后使用时存在变量)

在Application.cfc onRequestStart()中:

<cfif dateCompare(application.alertDate,now(),"d") EQ -1)>
  <cfset application.alertCount = 1>
  <cfset application.alertDate = now()>
</cfif>
Run Code Online (Sandbox Code Playgroud)

在page.cfm中:

<cfset application.alertCount++>
<cfif application.alertCount LTE 5>
  <cfmail ... >
</cfif>
Run Code Online (Sandbox Code Playgroud)

  • 你能用标准英语吗?这真的是非常基本的东西.这不是偶然的作业,是吗? (4认同)