CFMail附件文件名在Windows服务器上的ColdFusion 2016中断开

时间:2018-06-05 08:04:38

标签: coldfusion cfml coldfusion-2016

我将网站从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

与Linux发送的cfmail相同的附件给了我:

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名称尚未拆分。

任何人对如何解决此问题都有任何想法?

2 个答案:

答案 0 :(得分:3)

所以,我终于对它进行了分类。您需要手动将文件名放在类型:

<cfmailparam file="#FileName#" 
      type="#ContentType#/#ContentSubType#;name=""#FileName#""">

我以前从未需要这么做。我不知道这是Windows服务器,CF2016还是SmarterMail(我们的邮件服务器),但如果遇到同样的问题,上面的内容对我有用。

答案 1 :(得分:0)

您可能还会看到我向Adobe Bug Tracker发送的报告。自从Coldfusion切换到较新的Javamail以来,我就遇到了长文件名附件的问题。

https://tracker.adobe.com/#/view/CF-4199784