我要设置一组电子邮件,并首先从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#"
但这没有帮助。
有人可以告诉我如何解决此问题吗?
答案 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>