我将网站从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
名称尚未拆分。
任何人对如何解决此问题都有任何想法?
答案 0 :(得分:3)
所以,我终于对它进行了分类。您需要手动将文件名放在类型:
中<cfmailparam file="#FileName#"
type="#ContentType#/#ContentSubType#;name=""#FileName#""">
我以前从未需要这么做。我不知道这是Windows服务器,CF2016还是SmarterMail(我们的邮件服务器),但如果遇到同样的问题,上面的内容对我有用。
答案 1 :(得分:0)
您可能还会看到我向Adobe Bug Tracker发送的报告。自从Coldfusion切换到较新的Javamail以来,我就遇到了长文件名附件的问题。