coldfusion - CFMail 附件文件名在 Windows 服务器上的 ColdFusion 2016 中损坏

标签 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

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

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

最佳答案

所以,我终于整理了它。您需要手动将文件名放入类型:

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

我以前从来不需要这样做。我不知道这是 Windows 服务器、CF2016 还是 SmarterMail(我们的邮件服务器),但如果您遇到同样的问题,上述方法对我有用。

关于coldfusion - CFMail 附件文件名在 Windows 服务器上的 ColdFusion 2016 中损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50695121/

相关文章:

php - ColdFusion 相当于 PHP openssl_sign()

security - 安全环境中的 CF 和 PDF

php - 在 Coldfusion 中加密,然后在 PHP 中解密

java - Tomcat : Cannot put items on the request queue

coldfusion - 根据用户所在时区在 Coldfusion 中显示日期和时间

ColdFusion 通过 Java 执行 OWASP esapi

orm - 使用 Coldfusion Orm 存储货币

coldfusion - OpenBD 或 Railo 是 ColdFusion 的可行替代品吗?

iis - 如何从状态代码 500 页面中删除内部服务器错误短语?

coldfusion - 剥离 html 以换行符分隔的列表结束