coldfusion cfmail不接受=

时间:2019-04-01 21:47:50

标签: coldfusion cfmail

我要设置一组电子邮件,并首先从MySql表中提取信息

<cfoutput>
<cfset headls ='PersonFn,PersonLn,PersonEmail1'>
<cfquery name = "sord" datasource = "whatever">
  select distinct PersonID,#headls# from PersonRepDb        
</cfquery>
</cfoutput>

这将产生正确的输出。然后,我遍历查询结果,向每个人发送电子邮件。

  <cfset sordlen = sord.recordcount>
  <cfloop from = "1" to = "#sordlen#" index = 'j'> 
  <cfmail 
          from     = "#session.user#"  
          to       = "#sord['PersonEmail1'][j]#"          
          password = "#session.password#"
          username = "#session.user#"             
          server   = "localhost"                            
          replyto  = "#txt['replyto']#"
          subject  = "#txt['repsubject']#"               
          type     = "html"   >     

     ...stuff
 </cfmail>
 </cfloop>

当我尝试运行该程序时,出现错误消息:“必须定义以下属性之一[to,cc,bcc]”。显然,“收件人”在那里,如果我用特定的电子邮件(如“ joan@gmail.com”)替换变量,错误消息就会消失。因此,显然“ to”之后的变量没有被解码。

我尝试将变量sord ['PersonEmail1'] [j]拆分为@之前和之后的部分

<cfset preml = GetToken("#sord['PersonEmail1'][j]#",1,'@')>
<cfset posml = GetToken("#sord['PersonEmail1'][j]#",2,'@')>

,然后将设置为

 to = "#preml#@#posml#" 

但这没有帮助。

有人可以告诉我如何解决此问题吗?

1 个答案:

答案 0 :(得分:1)

这应该是您需要做的。如果您要使数据库中的列列表动态化,则可能不需要。在发送之前,只需确认电子邮件列的内容是有效的电子邮件格式即可。

<cfquery name="sord" datasource="whatever">
    select distinct 
        PersonID,
        PersonFn,
        PersonLn,
        PersonEmail1
    from 
        PersonRepDb        
</cfquery>

<cfloop query="sord">
    <cfif isValid("email", sord.PersonEmail1)>
        <cfmail 
            from     = "#session.user#"
            to       = "#sord.PersonEmail1#"
            password = "#session.password#"
            username = "#session.user#"
            server   = "localhost"
            replyto  = "#txt['replyto']#"
            subject  = "#txt['repsubject']#"
            type     = "html">

        ...stuff
    </cfmail>
</cfloop>