我对我的第一个 Cfmails 的看法有点敬畏。
问题是,我正在使用文本和内容的变量,我仍然希望有某种间距。
例如,如果我有:
<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 :-)在邮件本身,一切都是火箭筒。
问题:
有没有办法解决这个问题?我也根据变量的长度尝试空间,但这也没有什么好处,我真的不喜欢为此做数学......
感谢您的帮助!
答案 0 :(得分: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中,或者创建一个自定义标记来保存内容和函数操作。
注意:我在假设回答的问题是“如何在不影响结果文本消息的情况下使代码看起来很好”。如果您尝试使用生成的文本输出执行不同的操作,请告诉我。
答案 1 :(得分: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个字符(或者它们将包裹......也不会超过节拍)。
答案 2 :(得分: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)#