Coldfusion 2016, как включить шаблон при использовании cfscript mail()?

Простой пример того, что я пытаюсь сделать, используя код на основе тегов:

<cfmail
   to="someone@x.com"
   from="someone@y.com"
   subject="howdy"
   type="html">
      <cfinclude template="path/to/emailtemplates/sometemplate.htm"/>
</cfmail>

Я испробовал всевозможные решения с использованием cfscript и нахожусь на контрольно-пропускном пункте. Я думал, что это может сделать это, но увы нет.

savecontent variable="mailBody" {
  include "path/to/emailtemplates/sometemplate.htm";
};
mail = new mail();
mail.setTo( "someone@x.com" );
mail.setFrom( "someone@y.com" );
mail.setSubject( "howdy!" );
mail.setType( "HTML" );
mail.setBody( mailBody );
mail.send();

Мы не отправляем электронные письма, состоящие из нескольких частей - только HTML. Есть ли способ сделать это в сценарии?

1 ответ

Решение

Проблема в том, что в cfinlcude Вы не сможете включить HTML файл. Похоже, вам понадобится помощь FileRead() функция вместо включения.

mailBody=FileRead('absolute/path/to/emailtemplates/sometemplate.htm' [, charsetIfNeeded]);

За FileRead Для работы вы должны указать абсолютный путь к текстовому файлу на диске или в памяти на сервере.

Не уверен, что это ответ на первоначальный вопрос, но, к сожалению, в coldfusion 10 я имел обыкновение указывать CF обрабатывать другие файлы, кроме cfm. В вашем приложении используйте эту строку:

<cfset THIS.compileextforinclude = "htm" />
Другие вопросы по тегам