2012-07-23 46 views
0

如果agencyType_ID中的company表为2,则需要密件抄送人。我该怎么做?到目前为止,我已经得到了如何从查询的答复中检查条件?

<cfquery name="checkAgencyType" datasource="#APPLICATION.primaryDSN#"> 
    SELECT * FROM company WHERE agencyType_ID=2 
</cfquery> 

而且<cfmail>内我会

<cfif query=”checkAgencyType”>bcc=”[email protected]”></cfmail> 

编辑:我应该提到过,我已经有工作发送给使用和CC领域邮件所以我而不是重构一堆代码。但大多数回复似乎并不需要这样:-)

回答

10

我会使用属性集合参数。它允许您将属性作为结构传递给标记。这样你可以定义你的静态属性,然后动态添加其他属性。只要属性键名称匹配,它们就会传递给标签。

<cfset args = { 
    from = "[email protected]", 
    to = "[email protected]", 
    subject = "My Subject", 
    type = "HTML" 
}> 

<cfif checkAgencyType.agencyType_ID EQ 2> 
    <cfset args.bcc = "[email protected]"> 
</cfif> 

<cfmail attributeCollection="#args#"> 
    content... 
</cfmail> 
+0

这是我喜欢ColdFusion的东西之一...在这里,我们有不同的答案和多种方式来解决问题,所有有效的,不同的风格取决于具体的需求和开发风格。我喜欢这种语言。 :) – 2012-07-24 15:15:35

2

你在正确的轨道上,你只是想把它设置为一个变量。

<cfset bccaddress = '' /> 
<cfif checkAgencyType.RecordCount> 
    <cfset bccaddress = '[email protected]' /> 
</cfif> 

这假设通过在您的查询中返回一条记录来添加密件抄送地址。

然后用<cfmail to="[email protected]" from="[email protected]" subject="My subject" bcc="#bccaddress#">

+0

将它的工作,如果我的变量设置为BCC =“[email protected]”因此,如果总记录为0就没有BCC在所有(而不是BCC =“”)?看看我在说什么或没有? – Celeritas 2012-07-23 20:20:10

+1

@Celeritas不,那不行。在cfquery标签中使用bcc =“”并不会有什么影响。您不能将标签属性存储在变量中。您可以存储传递给该属性的值,但不存储属性为“attr ='some value'”,这是无效的CF语法。 – 2012-07-23 20:34:50

2

您可以使用“内联如果”检查结果查询,如有发现,设置一个电子邮件地址,它包括在你的标签。否则,它会将bcc属性设置为空白。

<cfmail 
    subject="Subject" 
    from="[email protected]" 
    to="[email protected]" 
    bcc="#iif(checkAgencyType.recordCount, de('[email protected]'), de(''))#" 
> 
    This is a cool message. 
</cfmail>