我想在CFSCRIPT CFC使用CFMAIL。 我想CFMAIL通过查询迭代,并更改基于查询的内容价值。 它这样做就好了,只要查询对象只有1行。 如果有多个行(例如,5行),它将发送5封电子邮件,但每个电子邮件将包含从第一个查询行的值。 我已经尝试了一些不同的东西。 见下文:
查询的OBJ:
Name | Email | Number
----------------------------------
John | john@foo.com | 12
Bill | bill@bar.com | 42
Ann | ann@bat.com | 100
CFSCRIPT:
var mailerService = new mail();
mailerService.setQuery(nameEmailNumberQuery);
mailerService.setTo('eterps@sendtomefortesting.com');
mailerService.setFrom( 'noReply@example.com' );
mailerService.setSubject('Hi');
mailerService.setFailto('fail@foo.com');
mailerService.setType('html');
mailerService.setSpoolenable(true);
savecontent variable="mailBody"{
WriteOutput(
"Hello " & Name & ". Your number is: " & Number & "!"
);
}
mailerService.send(body=mailBody & tmpVariable);
使用上面的代码,我收到三封邮件。 每封电子邮件说:“你好,约翰您的号码是:!12”
我也试过:
WriteOutput(
"Hello "
& mailerService.getQuery().Name
& ". Your number is: "
& mailerService.getQuery().Number
& "!"
);
和:
WriteOutput(
"Hello "
& mailerService.getQuery().Name[mailerService.getQuery.CurrentRow]
& ". Your number is: "
& mailerService.getQuery().Number[mailerService.getQuery.CurrentRow]
& "!"
);
编辑:一对夫妇更多的事情我已经试过(一个由@invertedSpear建议)
使用查询在电子邮件正文文字:
WriteOutput(
"Hello "
& nameEmailNumberQuery.Name
& ". Your number is: "
& nameEmailNumberQuery.Number
& "!"
);
试图用一个递增的计数器:
var counter = 1;
...
WriteOutput(
"Hello "
& mailerService.getQuery().Name[counter]
& ". Your number is: "
& mailerService.getQuery().Number[counter]
& "!" & evaluate('counter = counter++')
);
随着每一次相同的结果 - 3封电子邮件,都用“约翰”和“12”。 倾倒mailerService.getQuery().CurrentRow
结果在'1',每封电子邮件。 我使用Windows Server 2008 R3 ColdFusion风格9.0.1。