【问题标题】:Coldfusion: cfmail tag with Query loop, how to use isvalid()Coldfusion:带有查询循环的cfmail标签,如何使用isvalid()
【发布时间】:2016-05-02 19:10:19
【问题描述】:
  • 冷熔 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("email",'')。

【问题讨论】:

  • 据我所知,您要么需要先构建过滤查询结果集,要么将 cfmail 包装在 中并去掉查询属性。请记住 isValid() 电子邮件有问题。见raymondcamden.com/2014/07/21/…
  • 这是主要问题,因为生产,我无法在代码中更改太多。有什么我能做的吗?来自 MSSQL SP 的查询
  • 您能否更改将电子邮件插入数据库的代码?如果您在保存数据之前测试了 isValid(),则在调用 cfmail 时无需测试它。
  • 应用程序代码不一定是数据写入数据库的唯一方式。不过,@AdrianJ.Moreno 的建议还是不错的。
  • 更新您的存储过程以使用类似stackoverflow.com/questions/423606/… 的方式过滤掉不良电子邮件或查找 REGEX 示例。

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


【解决方案1】:

在 cfif 标记中尝试您的代码。

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

这里是您从 getEmail 查询中收到的一封电子邮件。如果有效,则仅发送电子邮件,否则将不发送电子邮件。最终你会发现无效邮件列表(如果有的话)。

【讨论】:

    【解决方案2】:

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

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

    我相信此返回仅记录具有有效电子邮件的记录。

    让我知道这是否有效

    【讨论】:

      【解决方案3】:

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

          <cfset new_Emailaddress = '?é?áomega@testdomain.com'>
      
          <cfset blnValid = #IsValid("email", new_Emailaddress)# />
          <cfset email_test_result = #YesNoFormat( blnValid )#>
      
          <cfoutput>#email_test_result#</cfoutput>
      

      (试试看,代码会输出“yes”)

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

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

      我想补充一点,不能单独依赖 isvalid ColdFusion 函数。我也建议过滤不太可能的电子邮件地址字符。

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

      【讨论】:

        猜你喜欢
        • 2016-05-30
        • 1970-01-01
        • 2018-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-09
        • 2011-09-14
        • 1970-01-01
        相关资源
        最近更新 更多