Coldfusion:带有Query循环的cfmail标签,如何使用isvalid()

时间:2016-05-02 19:10:20

标签: regex coldfusion coldfusion-10 cfml coldfusion-11

  • Coldfusion 11
  • windows 2012

代码:

  <cfmail query="getEmail" 
                to="#getEmail.email#"
                from="#getEmail.displayName# <#getEmail.emailfrom#>"
                subject="#getEmail.emailsubject#" 
                type="html" 
                server="10.1.0.2" 
                timeout="360" 
                username="#myuser#" 
                password="#mypassword#" spoolenable='no' >

    My email content 

    </cfemail>

我正在使用查询运行cfmail标记。在我的情况下,我如何使用isvalid(&#34; email&#34;,&#39;&#39;)。

3 个答案:

答案 0 :(得分:2)

在cfif标记内试用您的代码。

<cfloop query="getEmail">
  <cfif isValid("email", getEmail.email)>
      //Code to send mail
  <cfelse>
      Invalid Email <cfoutput>#email#</cfoutput>.
  </cfif>
</cfloop>

这是您从getEmail查询中收到的电子邮件。如果它有效则只发送电子邮件,否则将发送电子邮件。最终,您将找到无效电子邮件列表(如果有)。

答案 1 :(得分:1)

也许你可以在你的SQL查询中使用正则表达式,尝试设置这个条件

SELECT .... WHERE email NOT REGEXP '^[^@]+@[^@]+\.[^@]{2,}$'

我相信只返回有效电子邮件的记录。

让我知道这是否有效

答案 2 :(得分:0)

我发现这样的电子邮件地址...

    <cfset new_Emailaddress = '?é?áomega@testdomain.com'>

    <cfset blnValid = #IsValid("email", new_Emailaddress)# />
    <cfset email_test_result = #YesNoFormat( blnValid )#>

    <cfoutput>#email_test_result#</cfoutput>

(尝试一下,代码将输出“是”)

但是,当尝试发送到?é?áomega@testdomain.com的消息时,ColdFusion邮件服务器将爆炸。 (在CF 2016上测试)

“ ..标签CFMAIL的属性验证错误。属性to的值(当前为?é?áomega@testdomain.com)无效。...”

我想添加一个已被接受的答案,即不能仅依靠有效的ColdFusion函数。我建议也过滤一个不太可能的电子邮件地址字符。

    <cfset new_Emailaddress2 = ReReplaceNoCase(new_Emailaddress,"[\)|\(|\<|\>|\?|\=|##|\$|\%|\^|\&|\*|\!|\é|\á]","","ALL")> 
    <cfoutput>#new_Emailaddress#</cfoutput><br>
    <cfoutput>#new_Emailaddress2#</cfoutput>