我正在将一个站点从 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/