Изменение имени файла вложения в CFMail - PullRequest
4 голосов
/ 23 апреля 2009

Я пытаюсь использовать ColdFusion для отправки электронных писем, содержащих вложения, хранящиеся на нашем сервере.

Для управления этими вложениями мы называем их 1.jpg, 2.doc ... n.ext, где n - это ключ в базе данных, где мы храним другую информацию о файле, такую ​​как его оригинальное имя файла.

Я могу использовать код:

<cfmailparam file="c:\path\1.doc">

для указания файла, но затем он присоединяется к электронному письму как 1.doc. В любом случае я могу переопределить это и указать свое собственное имя файла отдельно от файла?

Ответы [ 6 ]

8 голосов
/ 15 января 2012

Вы можете попробовать добавить:

<cfmailparam 
file="#actual_file_name#" 
disposition="attachment; filename=""#changed_file_name#""">

Несколько кавычек являются преднамеренными ... Если они разрешают пробелы в имени файла.

4 голосов
/ 23 апреля 2009

Предложение Райана, вероятно, самое простое решение. Если вы используете CF 8.01, вы можете использовать новый атрибут cfmailparam remove. После того, как вы переименовали свои вложения с помощью cffile и передали их в cfmailparam, Coldfusion удалит их с диска после того, как они будут обработаны почтовой папкой:

<cfmailparam file="#File_path#" remove="true" />

(До версии 8.01 вы должны были убедиться, что ваше приложение не удаляло временные файлы до того, как с ними была завершена обработка почтового спула Coldfusion.)

В качестве альтернативы вы можете вызвать базовую Java-систему Coldfusion и создать свое электронное сообщение с вложениями только из памяти, с любыми именами, которые вам нравятся. Проверьте блог Дэна Свитцера для примера на CF 7.02.

1 голос
/ 01 августа 2017

ColdFusion 2016 добавил этот новый атрибут с именем filename, чтобы переопределить имя файла, указанное в атрибуте файла. Пример примера ниже

<cfmail from="john@sample.com" subject="filename test" to="joanna@sample.org" username="john@sample.com" password="password" server="localhost" spoolenable="false">
    <cfmailparam file="c:\Book2.xlsx" filename="Offers.xlsx">
Check out the new offers sheet
</cfmail>

Теперь, когда письмо отправляется пользователю, он / она увидит это как Offers.xslx вместо Book2.xslx. Больше информации на https://tracker.adobe.com/#/view/CF-4019518

1 голос
/ 12 мая 2014

Начиная с CF8, вы можете использовать файл и контент согласно: http://www.bennadel.com/blog/1220-coldfusion-cfmailparam-s-new-content-attribute-is-awesome.htm

<cfmailparam
    file="someNiceName.doc"
    content="#fileRead( yourNastyFileName.doc )#"
/>
1 голос
/ 23 апреля 2009

Если вы используете 8.0.1 (выполните cfdump var = "# server #", чтобы узнать это), это может немного облегчить вашу жизнь:

  • Теги cfmail и cfmailparam теперь имеют атрибут удаления, который сообщает ColdFusion удалить все вложения после успешной доставки почты.
  • Тег cfmailparam теперь имеет атрибут содержимого, который позволяет отправлять содержимое переменной ColdFusion в виде вложения. Для этого укажите переменную в знаках # в качестве значения атрибута содержимого, как в следующем примере: Атрибут file указывает имя файла для включения в заголовок письма, а не файл в системе ColdFusion

От:

http://www.adobe.com/support/documentation/en/coldfusion/801/cf801releasenotes.pdf

1 голос
/ 23 апреля 2009

в настоящее время единственный способ сделать это - использовать cffile и сделать копию файла во временном каталоге, переименовать его и затем прикрепить его. Тогда вы просто захотите удалить файл, как только вы закончите. Я не думаю, что есть способ прикрепить файл, но при прикреплении к электронному письму назовите его как-то иначе.

...