2 Replies Latest reply on Jul 14, 2014 4:39 AM by BKBK

    CFINCLUDE inside CFMAIL

    jackhuang Level 1

      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.

        • 1. Re: CFINCLUDE inside CFMAIL
          duncancumming Level 3

          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>

          • 2. Re: CFINCLUDE inside CFMAIL
            BKBK Adobe Community Professional & MVP

            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.