Cfmail和cftextarea不保留换行符

时间:2013-03-25 21:07:04

标签: coldfusion cfmail

我正在处理其中一个邮件表单有问题的网站。当用户将文本输入CFTEXTAREA时,它不会保留任何格式(按“输入”不会导致换行)。不是当它存储为变量或由<CFMAIL type="HTML" ..>通过电子邮件发送时。

网站管理员声称它曾经工作正常。有什么提示吗?

<cfprocessingdirective suppresswhitespace="No">
    <cfmail to="OMITTED" from="OMITTED" subject="#subject#" type="html">
       #message#    
    </cfmail>
</cfprocessingdirective>

<cfform name="mail" action="./mailinglist.cfm?sendMessage=true" 
       format="#type#" 
       height="400">

  <cfformgroup type="vertical">
      <table width="99%" cellpadding="3" cellspacing="0">
      <tr>
          <td class="form_label">Subject: </td>
          <td class="form_field">
               <cfinput class="textbox" required="yes" 
                    message="Please fill out the subject heading." 
                    style="width:200px;"  
                    type="text" 
                    name="subject" 
                    label="Subject:" width="200">
          </td>
      </tr>
      <tr>
          <td class="form_label">Message: </td>
          <td class="form_field">
                <cftextarea  class="textbox" required="yes" 
                       id="message" 
                       name="message" 
                       message="Please fill out the message body of the form..."
                       style="width:300px; height:150px;" 
                       width="350" height="250" 
                       label="Message:" 
                       wraptext="72" ></cftextarea>
          </td>
      </tr>
      <tr>
          <td class="form_label"></td>
          <td class="form_field" align="left" valign="top">
               <cfinput class="textbox" disabled value="yes"  
                     type="checkbox" 
                     name="announcement" 
                     label="Post as Announcement?">
               &nbsp;Post as Announcement? 
          </td>
      </tr>
      </cfformgroup>

4 个答案:

答案 0 :(得分:12)

要在HTML格式的电子邮件中保留textarea的换行符,您必须使用<br>标记替换换行符:

reReplace(message, '\n', '<br />', 'ALL')

如果您的电子邮件中没有其他HTML格式的内容,则只需从CFMAIL标记中删除type="HTML"属性,文本区域中的文本将显示为使用行输入的内容打破完好。

答案 1 :(得分:2)

我会使用@imthepitts的答案,但只是添加一些其他选项,你也可以使用

replace(message, chr(10), '<br />', 'ALL')

<cfmail type="html">
<pre>
#message#
</pre>
</cfmail>

注意:标记,故意左对齐,以防止电子邮件中出现意外缩进。

答案 2 :(得分:0)

尝试使用丰富的textarea。

<cftextarea name ="message" richtext="true"
other attributes
>
</cftextarea>

答案 3 :(得分:0)

在您的CFmail中,您可以使用#paragraphformat(message)#,这将保持您的换行符。