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