使用cfmail发送多封电子邮件

时间:2014-08-13 20:20:18

标签: coldfusion

我知道我在这里遗漏了一些非常小的东西,但是我无法解决这个问题。我有以下查询。 我需要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>

2 个答案:

答案 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>