2009-04-23 4 views
3

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

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

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

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

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

ответ

1

ColdFusion 2016 добавили новый атрибут файла, чтобы переопределить имя файла, указанного в атрибуте файла. Образец пример ниже

<cfmail from="[email protected]" subject="filename test" to="[email protected]" username="[email protected]" 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

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

4

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

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

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

В качестве альтернативы вы могли бы назвать базовую Java-систему Coldfusion и создать свое сообщение электронной почты с вложениями из памяти только с любыми именами, которые вам нравятся. Вычислите Dan Switzer's blog для примера на CF 7.02.

+0

Это в значительной степени то, что я закончил, но вместо того, чтобы записывать файл на диск и удалять его, я использовал атрибут content в CF8, чтобы справиться с большей частью этого, просто прочитав в файле двоичную переменную а затем напишите письмо cfmailparam. – Loftx

+0

Я должен отметить, что я действительно искал решение, которое не связано с чтением файла (и, возможно, его записью), так как я ожидаю, что это может привести к утечке ColdFusion для больших файлов, поэтому некоторый способ переименования приложение будет по-прежнему предпочтительнее. – Loftx

1

Если вы работаете 8.0.1 (сделайте cfdump переменная = «# сервера #», чтобы узнать), то это может сделать вашу жизнь немного легче:

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

От:

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

7

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

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

множественные цитаты преднамеренным ... Я позволяют пробелы в имя файла.

+0

Я искал что-то похожее на исходный вопрос, и это то, что я искал. Благодарю. –

+0

Это похоже только для одного приложения. Дополнительные вложения по электронной почте имеют свое реальное имя файла. –

+2

Удивительный! Это должно быть отмечено как правильный ответ. –

Смежные вопросы