Имя файла вложения CFMail повреждено в ColdFusion 2016 на сервере Windows

Я переношу сайт с CF10 в Linux на CF2016 в Windows и столкнулся с проблемой с вложенными файлами в cfmail.

Я прилагаю файл в cfmail с;

<cfmailparam file="#FileName#">

а также пробовали варианты с расположением и без него, например:

<cfmailparam file="#FileName#" disposition="attachment; 
         filename=""#FileName#""" 
         type="#ContentType#/#ContentSubType#">

Но несмотря ни на что, в CF2016 в Windows имена моих вложений в Outlook отображаются как ATT00160.dat (без набора типов) или ATT00169.xlsx (с набором типов)

Кажется, что проблема связана с именами файлов определенной длины. Имя файла из 64 символов разобьет его, а меньшее имя файла, скажем, из 49 символов — нет.

Просматривая источник сообщения в Outlook, из cfmail, отправленного из Windows, я вижу значение ниже. Заметили, что под 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 не было разделено.

У кого-нибудь есть идеи, как решить эту проблему?


person luke    schedule 05.06.2018    source источник
comment
Можете ли вы попробовать установить атрибут decode как атрибут false или filename (представлено в 2016 году)?   -  person Beginner    schedule 05.06.2018
comment
спасибо @Beginner - я пробовал decode=false и filename=#filename# по отдельности и вместе - к сожалению, без разницы   -  person luke    schedule 05.06.2018


Ответы (2)


Итак, я наконец разобрался. Вам нужно вручную поместить имя файла в тип:

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

Раньше мне никогда не приходилось этого делать. Я не знаю, является ли это сервером Windows, CF2016 или SmarterMail (нашим почтовым сервером), но если вы столкнетесь с той же проблемой, вышеописанное сработало для меня.

person luke    schedule 05.06.2018
comment
Спасибо, что вернулись и опубликовали свое решение. - person Miguel-F; 05.06.2018

Вы также можете увидеть мой отчет в системе отслеживания ошибок Adobe. У меня были проблемы с вложениями длинных имен файлов с тех пор, как Coldfusion перешел на более новую версию Javamail.

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

person Michael Miller    schedule 24.01.2020