我知道我在这里遗漏了一些非常小的东西,但是我无法解决这个问题。我有以下查询。 我需要3封电子邮件才能发送到相应的电子邮件,但正在发生的事情只是向3位用户发送相同的电子邮件(内容)。 知道这里有什么问题。
<cfquery name = getitems >
Select items, id, users
from table1
</cfquery>
This below query returns say 3 users
<cfquery name = getusers >
Select name,email,id from table2
</cfquery>
<cfloop query=”getusers”>
<cfquery name = getuserdata dbtype=”query” >
Select * from getitems where id=#id#
</cfquery>
</cfloop>
<cfsavecontent variable=”test”>
<cfloop query=" getuserdata ">
<cfloop from="1" to="#arrayLen(itemsarray)#" index="ii">
Build the email body
</cfloop>
</cfloop
</cfsavecontent>
<cfloop query=”getusers”>
<cfmail >
Send email to users
</cfmail>
</cfloop>
答案 0 :(得分:4)
这是一种更好的方式。
<cfquery name="theOnlyQueryYouShouldNeed">
select name, email, etc
from table1 join table2 on table1.id = table2.id
etc
</cfquery>
<cfmail query="theOnlyQueryYouShouldNeed"
to="#email#
etc>
build body here. You can output variables with pound signs
only, no cfoutput tag required
</cfmail>
答案 1 :(得分:0)
Dan指出的方法是更好的方法,但我会指出你的代码出了什么问题。 您运行循环并使用savecontent将所有值存储在单个变量中。现在,您再次运行循环,并将相同的变量发送给所有用户。
<cfquery name = getitems >
Select items, id, users from table1
</cfquery>
<cfquery name = getusers >
Select name,email,id from table2
</cfquery>
<cfloop query=”getusers”>
<cfquery name = getuserdata dbtype=”query” >
Select * from getitems where id=#id#
</cfquery>
<cfsavecontent variable=”test”>
<cfloop query=" getuserdata ">
<cfloop from="1" to="#arrayLen(itemsarray)#" index="ii">
Build the email body
</cfloop>
</cfloop>
</cfsavecontent>
<!--- so basically, you need to send email within the same loop in which you are generating your savecontent variable--->
<cfmail >
Send email to users
</cfmail>
</cfloop>