Как отправить файл cfm в качестве тела сообщения электронной почты, используя ColdFusion? - PullRequest
0 голосов
/ 24 сентября 2011

У меня есть устаревшее приложение, в котором файл 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 голосов
/ 24 сентября 2011

Вы можете отобразить содержимое, которое хотите отправить по электронной почте, в блоке 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 голос
/ 24 сентября 2011

Вызовите CFC, назначая его переменной, например, cfset request.emaiBody = cfc.function ().Затем просто поместите его в свой тег setBody.

0 голосов
/ 03 октября 2014

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();
0 голосов
/ 28 сентября 2011

В итоге я последовал совету Генри в комментариях и создал CFC на основе CFML:

<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>

Предложение Дейва Лонга также хорошо, то есть создание компонентов с использованием <cfcomponent>, затем перенос кодав <cfscript> тегах.Это дает вам возможность вернуться к CFML в случае, если нет эквивалента cfscript или проще с CFML:

<cfcomponent>
    <cfscript>
        void function GetData()
        {
            RunDbQuery();
        }
    </cfscript>

    <cffunction name="RunDbQuery">
        <cfquery name="data">
            SELECT * FROM ABC;
        </cfquery>
        <cfreturn data>
    </cffunction>

</cfcomponent>
...