Coldfusion cfmail не принимает = - PullRequest
0 голосов
/ 02 апреля 2019

Я настраиваю группу писем и начинаю с извлечения информации из таблицы 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]». Очевидно, что есть «to», и если я заменил переменную на конкретное письмо, например «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 Ответ

2 голосов
/ 02 апреля 2019

Это должно быть все, что вам нужно сделать. Если вы пытаетесь сделать список столбцов из БД динамическим, это, вероятно, не нужно. Просто подтвердите, что содержимое столбца электронной почты является допустимым форматом электронной почты перед отправкой.

<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>
...