我是ColdFusion的新手,我正试图从数据库中提取数据并将其发送到我创建的电子邮件功能。
myQry = new Query();
myQry.setSQL("select * from stocknotifications LEFT JOIN options ON stocknotifications.stocknotification_id = options.option_id ORDER BY stocknotification_id DESC LIMIT 1 "); //set query
qryRes = myQry.execute();
writedump(qryRes.getResult(), false);
Mail = variables.NotificationService.newMail();
Mail.setTo("bfrench@destinationcms.co.uk");
Mail.setSubject( "New Stock Request" );
// render body with layout which uses the rc.emailView
Mail.setBody(ToString(qryRes.getResult()));
variables.NotificationService.sendMail( Mail );
我的writeDump()工作并显示表格中的最后一项。唯一的问题是我不能将它传递给setBody()而不会抛出错误。
无法将复杂对象类型查询转换为字符串 使用内置函数“serialize(Query):String”从查询
创建字符串
有什么想法吗?
答案 0 :(得分:3)
根据您收到的错误消息,您实际上可以使用序列化替换toString,并且您可以继续使用。
如果你想要的只是数据发送电子邮件而不关心演示文稿,快速和肮脏,你可能想尝试SerializeJSON()
;它会将query
转换为JSON
字符串COLUMNS
和DATA
:
Mail.setBody(SerializeJSON(qryRes.getResult()));
答案 1 :(得分:1)
最简单的方法是使用cfsavecontent。我不确定是否有这样的脚本版本,所以我将向您展示如何使用标签。您已经有一个名为qryRes的查询结果。
<cfsavecontent variable = "eMailBody">
<cfoutput query = "qryRes">
#field1#, #field2# etc
</cfoutput>
</cfsavecontent>
然后对于邮件功能,您可以这样做:
mail.setBody(emailBody);
如果您想以html格式发送电子邮件,请在cfsavecontent块中放入相应的html标记。否则,请注意源代码的carraige返回。它们包含在cfsavecontent生成的变量中。对于上面的代码示例,您将在正文顶部获得3个空行,数据行将是双倍行距。