ColdFusion通过邮件函数尝试捕捉循环

ColdFusion通过邮件函数尝试捕捉循环,coldfusion,railo,cfmail,Coldfusion,Railo,Cfmail,我有一个电子邮件发送到的电子邮件地址列表。mail函数从数据库循环遍历列表,但如果遇到格式错误的电子邮件地址,它将停止并中断循环。我曾尝试使用try/catch来捕获错误,并希望它能继续通过循环,但它没有像我所希望的那样工作。代码如下。如果有人有任何想法,或者是一个正则表达式,我可以在循环之前筛选电子邮件地址,过滤掉不好的,那就太棒了 谢谢 <!---Try to send the mail(s)---> <cftry> <cfmail to="&l

我有一个电子邮件发送到的电子邮件地址列表。mail函数从数据库循环遍历列表,但如果遇到格式错误的电子邮件地址,它将停止并中断循环。我曾尝试使用try/catch来捕获错误,并希望它能继续通过循环,但它没有像我所希望的那样工作。代码如下。如果有人有任何想法,或者是一个正则表达式,我可以在循环之前筛选电子邮件地址,过滤掉不好的,那就太棒了

谢谢

    <!---Try to send the mail(s)--->
<cftry>
    <cfmail to="<#Auctioneer.email#>" from="#emailSite#" subject="#Email.subject#" server="#emailServer#" query="Auctioneer" type="html">
        <!---Some email content--->
    </cfmail>

    <cfcatch type="Application">
        <cflog text="#cfcatch.detail#" file="mail" type="Error" application="yes">
        <cfmail to="admin@website.co.uk" from="#emailSite#" subject="Invalid E-Mail Address" type="html">
            Email address not valid error.
            #Auctioneer.email#
            <cfdump var="#cfcatch.detail#">
        </cfmail>
    </cfcatch>
</cftry>

电子邮件地址无效错误。
#Auctioneer.email#

您可以先验证查询中的电子邮件地址

不过,对我来说,我从来不喜欢让CFMAIL标记管理查询。它似乎总是造成比它的价值更多的麻烦。我通常会这样做:

<cfoutput query="Auctioneer">
  <cftry>
    <cfmail to="#email#" from="#variables.emailSite#" subject="#variables.subject#" server="#application.emailServer#" type="html">
      <!---Some email content--->
    </cfmail>

    <cfcatch type="Application">
        <cflog text="#cfcatch.detail#" file="mail" type="Error" application="yes">
        <cfmail to="admin@website.co.uk" from="#variables.emailSite#" subject="Invalid E-Mail Address" type="html">
            Email address not valid error.
            #email#
            <cfdump var="#cfcatch.detail#">
        </cfmail>
    </cfcatch>
  </cftry>
</cfoutput>

电子邮件地址无效错误。
#电子邮件#

您要做的是遍历地址,验证地址,并只发送有效条目的邮件。像这样的

<cfloop query="getEmails">
    <cfif isValid("email", Auctioneer.email)
    ...send valid email...
    <cfelse>
    ...send invalid email, or better log in database...
    </cfif>
</cfloop>


我会亲自循环它们,捕捉错误并继续循环

for(var i = 1; i < Auctioneer.recordCount; i++) {
    try {
        //send email
    } catch (Any e) {
        //log
        continue;
    }
}
for(var i=1;i
不过要小心。似乎
isValid(“email”,…)
可以拒绝一些有效的电子邮件地址。这可能只是为了清楚起见,但从技术上讲,不需要
continue
,因为“try/catch”在循环中。