1

我对我的第一个Cfmail的外观有点敬畏。

问题是,我对文本和内容都使用了变量,我仍然希望有某种间距。

例如,如果我有:

<cfprocessingdirective suppresswhitespace="No">
    <cfmail
        TO="#Local.User.email#"
        FROM="..."
        SERVER="..."
        USERNAME="..."
        PASSWORD="..."
        WRAPTEXT="80"
        SUBJECT="#tx_automailer_register_subject# - #Local.User.Comp#">

#tx_automailer_default_hello#

#tx_automailer_register_info#

#tx_automailer_register_iln#:   #Local.User.iln#
#tx_firma#:                     #Local.User.firma#
#tx_ansprechpartner#:           #Local.User.ansprechpartner#
#tx_adresse#:                   #Local.User.adresse#
#tx_plz#:                       #Local.User.plz#
#tx_ort#:                       #Local.User.ort#
...

唯一看起来不错的地方是我的 cfc :-) 在邮件本身中,一切都像火箭筒一样。

问题:
有没有办法隔开这个?我也尝试过根据变量的长度来划分空间,但这也没有任何好处,我也不太热衷于为此做数学......

感谢帮助!

4

3 回答 3

4

唯一的选择可能是对内容进行后处理。在 cfsavecontent 中构建漂亮的内容,然后运行清理功能。

<cfprocessingdirective suppresswhitespace="No">
<cfsavecontent variable="message">
    #tx_automailer_default_hello#

    #tx_automailer_register_info#

    #tx_automailer_register_iln#:   #Local.User.iln#
    #tx_firma#:                     #Local.User.firma#
    #tx_ansprechpartner#:           #Local.User.ansprechpartner#
    #tx_adresse#:                   #Local.User.adresse#
    #tx_plz#:                       #Local.User.plz#
    #tx_ort#:                       #Local.User.ort#
</cfsavecontent>
<cfmail
    TO="#Local.User.email#"
    FROM="..."
    SERVER="..."
    USERNAME="..."
    PASSWORD="..."
    WRAPTEXT="80"
    SUBJECT="#tx_automailer_register_subject# - #Local.User.Comp#"
>#cleanupTextMessage(message)#</cfmail>

<cffunction name="cleanupTextMessage" output="false">
    <cfargument name="content" />
    <!--- remove whitespace at beginning of each line --->
    <cfset arguments.content = reReplace(arguments.content, "^\s+", "", "all") />
    <!--- replace any multiple whitespace characters with one space --->
    <cfset arguments.content = reReplace(arguments.content, "\s+", " ", "all") />
    <cfreturn arguments.content />
</cffunction>

您实际上可能能够将 cfsavecontent 嵌套在 cfmail 中,或者创建一个自定义标签来执行 savecontent 和函数操作。

注意:我是在假设问题是“如何使代码看起来不错而不影响生成的文本消息”的情况下回答的。如果您试图对生成的文本输出做一些不同的事情,请告诉我。

于 2012-06-04T20:19:53.637 回答
2

您可以使用 HTML 通过将 TYPE="html" 添加到您的 cfmail 属性来执行此操作。如果你想要那个 sysprint 类型的外观,然后放入一个“pre”标签。如在

<pre>
#tx_automailer_default_hello#

#tx_automailer_register_info# 
....

</pre>

或者您可以添加一个表格,如下所示:

<table
<tr>
<td>#tx_automailer_default_hello#</td>
</tr>
<tr><td>

#tx_automailer_register_info#
</td>

如果你想坚持纯文本,你需要确保你的制表符/空格计数正确,并且你的每一行都不超过 80 个字符(或者它们会换行......也没有节拍)。

于 2012-06-04T20:20:52.320 回答
1

如果您设置为纯文本电子邮件并且确信收件人将使用固定宽度的字体,您可以使用lJustify()将您的文本和填充与空格对齐。

左对齐指定长度的字符串中的字符。

#lJustify(tx_automailer_register_iln & ":",32)# #lJustify(Local.User.iln,25)#
#lJustify(tx_firma & ":",32)# #lJustify(Local.User.firma,25)#
#lJustify(tx_ansprechpartner & ":",32)# #lJustify(Local.User.ansprechpartner,25)#
#lJustify(tx_adresse & ":",32)# #lJustify(Local.User.adresse,25)#
#lJustify(tx_plz & ":",32)# #lJustify(Local.User.plz,25)#
#lJustify(tx_ort & ":",32)# #lJustify(Local.User.ort,25)#
于 2012-06-05T13:23:54.977 回答