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

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

<cfmail
   to="[email protected]"
   from="[email protected]"
   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( "[email protected]" );
mail.setFrom( "[email protected]" );
mail.setSubject( "howdy!" );
mail.setType( "HTML" );
mail.setBody( mailBody );
mail.send();

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


person Steve    schedule 04.06.2018    source источник
comment
Что происходит, когда вы запускаете этот код? Ошибка вылетает?   -  person Miguel-F    schedule 04.06.2018


Ответы (2)


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

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

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

person rrk    schedule 05.06.2018

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

<cfset THIS.compileextforinclude = "htm" />
person Tiberiu Kiss    schedule 15.03.2019