我正在尝试使用 ColdFusion 发送包含存储在我们服务器上的附件的电子邮件。
为了管理这些附件,我们称它们为1.jpg
,2.doc
...数据库n.ext
中n
的键在哪里,我们在其中保存有关文件的其他信息,例如其原始文件名。
我可以使用以下代码:
<cfmailparam file="c:\path\1.doc">
指定文件,但随后将其作为1.doc
. 无论如何我可以覆盖它并与文件分开指定我自己的文件名吗?
我正在尝试使用 ColdFusion 发送包含存储在我们服务器上的附件的电子邮件。
为了管理这些附件,我们称它们为1.jpg
,2.doc
...数据库n.ext
中n
的键在哪里,我们在其中保存有关文件的其他信息,例如其原始文件名。
我可以使用以下代码:
<cfmailparam file="c:\path\1.doc">
指定文件,但随后将其作为1.doc
. 无论如何我可以覆盖它并与文件分开指定我自己的文件名吗?
您可以尝试添加:
<cfmailparam
file="#actual_file_name#"
disposition="attachment; filename=""#changed_file_name#""">
多个引号是故意的......我他们允许文件名中的空格。
Ryan 的建议可能是最简单的解决方案。如果您使用的是 CF 8.01,则可以使用cfmailparam
's newremove
属性。在您使用 重命名附件cffile
并将它们传递给 后cfmailparam
,Coldfusion 将在邮件假脱机处理它们后为您从磁盘中删除它们:
<cfmailparam file="#File_path#" remove="true" />
(在 8.01 版本之前,您必须确保您的应用程序在 Coldfusion 的邮件假脱机完成之前没有删除临时文件。)
或者,您可以调用 Coldfusion 的底层 Java 并仅使用内存中的附件构建您的电子邮件消息,使用您喜欢的任何名称。查看Dan Switzer 的博客以获取有关 CF 7.02 的示例。
目前唯一的方法是使用 cffile 并在临时目录中制作文件的副本,重命名它然后附加它。然后,您只想在完成后删除该文件。我认为没有办法附加文件,但在附加到电子邮件时称它为不同的东西。
如果您正在运行 8.0.1(执行 cfdump var="#server#" 以找出答案),那么这可能会让您的生活更轻松一些:
从:
http://www.adobe.com/support/documentation/en/coldfusion/801/cf801releasenotes.pdf
从 CF8 开始,您可以按照以下方式使用文件和内容:http ://www.bennadel.com/blog/1220-coldfusion-cfmailparam-s-new-content-attribute-is-awesome.htm
<cfmailparam
file="someNiceName.doc"
content="#fileRead( yourNastyFileName.doc )#"
/>
ColdFusion 2016 添加了这个名为文件名的新属性来覆盖文件属性中指定的文件名。下面是一个示例
<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