0

我有一个遗留应用程序,其中一个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();

有人知道我该怎么做吗?

4

4 回答 4

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

于 2011-09-23T21:00:30.513 回答
1

调用 CFC 将其分配给变量,例如 cfset request.emaiBody = cfc.function()。然后把它放在你的 setBody 标签中。

于 2011-09-23T21:18:43.910 回答
1

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();
于 2014-10-02T22:48:12.913 回答
0

我最终在评论中遵循了 Henry 的建议,并创建了一个基于 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>
于 2011-09-27T20:38:53.520 回答