Как отправить файл cfm в качестве тела сообщения электронной почты, используя ColdFusion?
У меня есть устаревшее приложение, где 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 ответа
В итоге я последовал совету Генри в комментариях и создал 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>
Вы можете сделать контент, который хотите отправить по электронной почте, в 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
Вызовите CFC, присваивая его переменной, например, cfset request.emaiBody = cfc.function(). Затем просто поместите его в свой тег setBody.
ОП убедили использовать 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();