Путаница в том, когда использовать cfoutput в cfmail

Я не уверен на 100%, когда использовать cfoutput и как cfoutput можно использовать в следующем примере. Должен ли весь cfmail быть заключен в cfoutput?

Предыстория: у меня есть функция, которая отправляет электронное письмо на основе оператора if. В сообщении электронной почты есть переменные, полученные из cfquery.

 <cffunction name="emailUpdate" access="public" returntype="string">

    <cfargument name="usr_email" required="yes">
    <cfargument name="status_update" required="yes">
    <cfargument name="form_id" required="yes">


    <cfquery name="emailformData" datasource="RC">
      SELECT    *
      FROM      Basic_Info
      WHERE      ID = <cfqueryparam value="#ARGUMENTS.form_id#">
    </cfquery>

    <cfoutput query="emailformData">   
      <cfmail 
        from="[email protected]" 
        to="#usr_email#" 
        subject="Status Update"> 

        <cfif status_update EQ 'Submitted'>

          Form Submitted: The following quote request ID: #emailformData.ID#  has been submitted on

          #emailformData.Submission_Date# for the following party #emailformData.Sold_to_Party#. You will receive automated

          updates via email when your submission changes status. <b>- Admin Team</b>

        <cfelseif status_update EQ 'Assigned'>

          Form Assigned by Admin Request ID: #emailformData.ID# for the following party #emailformData.Sold_to_Party# was

          assigned to Admin ID #emailformData.Admin_ID# on #DateFormat(Now())#, #TimeFormat(Now())#.   

          Below is their direct  contact information for any change requests or status updates. <b>- Admin Team</b>

        <cfelseif status_update EQ 'Returned'>

          Returned by Admin Form ID: #emailformData.ID# for the following party #emailformData.Sold_to_Party# was

          returned by Admin ID #emailformData.Admin_ID# on #DateFormat(Now())#, #TimeFormat(Now())#

          for the following reasons. Admin Notes: #emailformData.Admin_Notes#.

          <b>- Admin Team</b>

        <cfelseif status_update EQ 'Completed'>

          Form Completed Form ID: #emailformData.ID# for the following party #emailformData.Sold_to_Party# has been

          marked as COMPLETED on #DateFormat(Now())#, #TimeFormat(Now())#. The following Quote Number has been

          assigned to this form #emailformData.Quote_Num#.  The quote will be emailed to you.  If the Admin added any closing notes to the form they will appear below:

          #emailformData.Admin_Notes#

          <b>- RFQ Admin Team</b>

        </cfif>

      </cfmail>
    </cfoutput>

</cffunction>

person Denoteone    schedule 19.05.2015    source источник


Ответы (1)


Вам это не нужно, если, возможно, вы не выполняете циклический вывод cfquery. например если ваш запрос emailformData вернул несколько строк (а это явно не так), вы можете сделать:

<cfmail ...>
    Here's the email data #form.name# asked for:

    <cfoutput query="emailformData">
        #emailformData.Sold_to_Party#
    </cfoutput>

    Sent on #dateFormat(now())#
</cfmail>

См. примеры использования тега cfmail на сайте Adobe. и это обсуждение на сайте Рэя Камдена.

person duncan    schedule 19.05.2015
comment
Итак, могу ли я обернуть все это в ‹cfoutput query=emailformData›? см. мои правки к моему вопросу выше. Спасибо за помощь. +1 - person Denoteone; 19.05.2015
comment
вам даже не нужен этот <cfoutput>... тег <cfmail> действует как <cfoutput>. Если вы хотите отправить несколько электронных писем на основе результатов запроса, вы должны сделать <cfmail query="emailformData">, но, похоже, что ваш запрос возвращает только 1 строку, вам также не нужно этого делать. - person duncan; 19.05.2015
comment
Вам это никогда не понадобится. Тег cfoutput в этом ответе с таким же успехом может быть тегом cfloop. Внутри почтового блока они делают то же самое. - person Dan Bracuk; 19.05.2015