我有一个遗留应用程序,其中email.cfm
文件与cfmail
标记一起用于发送电子邮件:
<cfmail from="abc@123.com" to="def@456.com" subject="New e-mail!">
// lots of HTML
</cfmail>
现在我想为 ColdFusion Model Glue 3 更新它。我想使用控制器中的mail
对象发送它,并在正文中包含CFM页面:
var mail = new mail();
mail.setFrom("abc@123.com");
mail.setTo("def@456.com");
mail.setSubject("New e-mail!");
mail.setBody( ** SOME CFM FILE ** );
mail.send();
有人知道我该怎么做吗?
答案 0 :(得分:4)
您可以在cfsavecontent
块中呈现要发送电子邮件的内容,然后在电子邮件中使用该内容,例如:
<cfsavecontent variable="myemail">
...add some HTML, include another file, whatever...
</cfsavecontent>
<cfscript>
mail.setBody( myemail );
</cfscript>
请参阅http://help.adobe.com/en_US/ColdFusion/9.0/CFMLRef/WSc3ff6d0ea77859461172e0811cbec22c24-7d57.html
答案 1 :(得分:1)
调用CFC将其分配给变量,例如cfset request.emaiBody = cfc.function()。然后将它放在你的setBody标签中。
答案 2 :(得分:0)
我最终在评论中遵循亨利的建议并创建了一个基于CFML的CFC:
<cfcomponent>
<cffunction name="SendMail">
<cfargument name="from"/>
<cfargument name="to"/>
<cfargument name="subject"/>
<cfmail from="#from#" to="#to#" subject="#subject#">
<!--- HTML for e-mail body here --->
</cfmail>
</cffunction>
</cfcomponent>
Dave Long的建议也很好,即使用<cfcomponent>
创建组件,然后将代码包装在<cfscript>
标签中。这使您能够在没有cfscript等效或使用CFML更容易的情况下回退到CFML:
<cfcomponent>
<cfscript>
void function GetData()
{
RunDbQuery();
}
</cfscript>
<cffunction name="RunDbQuery">
<cfquery name="data">
SELECT * FROM ABC;
</cfquery>
<cfreturn data>
</cffunction>
</cfcomponent>
答案 3 :(得分:0)
OP被说服使用CFML,但要回答最初被问到的问题:
var mail = new Mail();
mail.setFrom("abc@123.com");
mail.setTo("def@456.com");
mail.setSubject("New e-mail!");
mail.setType("html");
savecontent variable="mailBody" {
include "email.cfm";
}
mail.setBody(mailBody);
mail.send();