I am setting up a group of emails, and start by extracting information from a MySql table
<cfoutput>
<cfset headls ='PersonFn,PersonLn,PersonEmail1'>
<cfquery name = "sord" datasource = "whatever">
select distinct PersonID,#headls# from PersonRepDb
</cfquery>
</cfoutput>
This produces the correct output. I then loop through the results of the query, sending an email to each person.
<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>
When I try to run this program I get an error message: "One of the following attributes must be defined [to, cc, bcc]". Obviously the "to" is there, and if I replace the variable with a specific email like "[email protected]" the error message goes away. So apparently the variable after 'to' is not being decoded.
I tried splitting up the variable sord['PersonEmail1'][j] into the parts before and after the @
<cfset preml = GetToken("#sord['PersonEmail1'][j]#",1,'@')>
<cfset posml = GetToken("#sord['PersonEmail1'][j]#",2,'@')>
and then setting up the to as
to = "#preml#@#posml#"
but that did not help.
Can anyone tell me how to fix this?
This should be all you need to do. If you're trying to make the list of columns from the DB dynamic, that's probably not needed. Just validate that the contents of the email column is a valid email format before sending.