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>

実際には、cfmail 内に cfsavecontent をネストしたり、savecontent および function アクションを実行するカスタム タグを作成したりできる場合があります。

注: 私は、質問が「結果のテキスト メッセージに影響を与えずにコードの見栄えを良くする方法」であるという仮定の下で答えていました。結果のテキスト出力で何か違うことをしようとしていた場合は、私に知らせてください。

于 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 に答える