【发布时间】:2018-06-05 08:04:37
【问题描述】:
我正在将一个站点从 Linux 上的 CF10 移动到 Windows 上的 CF2016,并且遇到了 cfmail 文件附件的问题。
我将文件附加到 cfmail 中;
<cfmailparam file="#FileName#">
并且还尝试了带有和不带有处置和类型的变体,例如:
<cfmailparam file="#FileName#" disposition="attachment;
filename=""#FileName#"""
type="#ContentType#/#ContentSubType#">
但无论如何,在 Windows 上的 CF2016 上,我在 Outlook 中的附件名称是ATT00160.dat(没有类型集)或ATT00169.xlsx(有类型集)
似乎超过一定长度的文件名会导致问题。 64 个字符的文件名会破坏它,但较小的文件名(例如 49 个字符)不会。
在 Outlook 中查看消息源,从 Windows 发送的 cfmail 中,我看到了以下值。注意到content-type下的名字被拆分了吗?
Content-Type: application/octet-stream;
name*0=BLAH_BLAH1_Ownership_Database_Issue_2018-01_In_Development2.;
name*1=xlsx
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename*0=BLAH_BLAH1_Ownership_Database_Is;
filename*1=sue_2018-01_In_Development2.xlsx
用 cfmail 从 Linux 发送的相同附件给了我:
Content-Type: application/octet-stream;
name=BLAH_BLAH1_Ownership_Database_Issue_2018-01_In_Development2.xlsx
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
filename*0=BLAH_BLAH1_Ownership_Database_Is;
filename*1=sue_2018-01_In_Development2.xlsx
请注意 content-type 名称尚未拆分。
有人对如何解决此问题有任何想法吗?
【问题讨论】:
-
您可以尝试将
decode属性设置为false或filename(2016 年引入)属性吗? -
感谢@Beginner - 我分别尝试了 decode="false" 和 filename="#filename#" - 不幸的是没有区别
标签: coldfusion cfml coldfusion-2016