Skip to main content
Known Participant
July 14, 2014
Answered

CFINCLUDE inside CFMAIL

  • July 14, 2014
  • 2 replies
  • 1033 views

I have a done a CFQUERY and retrieve user's email and name.  Then I try to do a CFMAIL something like:

<cfmail to="#user.email#" from="sender@somewhere.com" subject="Message from #sender_name#" type="html">

<table><tr><td>

Dear #receiver_name#

</td></tr>

<tr><td>

#form.message#

</td></tr>

</table>

</cfmail>

This seems to work with CFMAIL and the variables are being populated properly.  However, when I placed the content into a template content.cfm because I want to use it somewhere else as well. So content.cfm has:

<table><tr><td>

Dear #receiver_name#

</td></tr>

<tr><td>

#form.message#

</td></tr>

</table>

and the program became:

<cfmail to="#user.email#" from="sender@somewhere.com" subject="Message from #sender_name#" type="html">

<cfinclue template="content.cfm">

</cfmail>

Now the problem is, I am NOT getting the variables (#receiver_name# and#form.message#) populated by Coldfusion when I use the cfinclue template.  Why?  This is driving me crazy.  I don't know why it doesn't work.    Thanks in advance.

This topic has been closed for replies.
Correct answer BKBK

Your code works in cfmail because Coldfusion performs cfoutput implicitly within the cfmail tag. The solution is therefore to add the cfoutput tag in content.cfm, as follows:

<cfoutput>

<table><tr><td>

Dear #receiver_name#

</td></tr>

<tr><td>

#form.message#

</td></tr>

</table>

</cfoutput>

Incidentally, your post has a typo: cfinclue instead of cfinclude. This is just a typo to get out of the way, and has nothing to do with the issue.

2 replies

BKBK
Community Expert
BKBKCommunity ExpertCorrect answer
Community Expert
July 14, 2014

Your code works in cfmail because Coldfusion performs cfoutput implicitly within the cfmail tag. The solution is therefore to add the cfoutput tag in content.cfm, as follows:

<cfoutput>

<table><tr><td>

Dear #receiver_name#

</td></tr>

<tr><td>

#form.message#

</td></tr>

</table>

</cfoutput>

Incidentally, your post has a typo: cfinclue instead of cfinclude. This is just a typo to get out of the way, and has nothing to do with the issue.

Participating Frequently
July 14, 2014

Try this (usually at this point I'd have two versions, HTML and plaintext):

<cfsavecontent variable="content"><cfinclude template="content.cfm"></cfsavecontent>

<cfmail to="#user.email#" from="sender@somewhere.com" subject="Message from #sender_name#" type="html">

  <cfmailpart type="html">#content#</cfmailpart>

</cfmail>

Also wrap content.cfm inside <cfoutput></cfoutput>