5

我正在尝试使用 ColdFusion 发送包含存储在我们服务器上的附件的电子邮件。

为了管理这些附件,我们称它们为1.jpg2.doc...数据库n.extn的键在哪里,我们在其中保存有关文件的其他信息,例如其原始文件名。

我可以使用以下代码:

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

指定文件,但随后将其作为1.doc. 无论如何我可以覆盖它并与文件分开指定我自己的文件名吗?

4

6 回答 6

9

您可以尝试添加:

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

多个引号是故意的......我他们允许文件名中的空格。

于 2012-01-14T23:18:35.647 回答
4

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 的示例。

于 2009-04-23T15:37:09.087 回答
1

目前唯一的方法是使用 cffile 并在临时目录中制作文件的副本,重命名它然后附加它。然后,您只想在完成后删除该文件。我认为没有办法附加文件,但在附加到电子邮件时称它为不同的东西。

于 2009-04-23T14:49:27.777 回答
1

如果您正在运行 8.0.1(执行 cfdump var="#server#" 以找出答案),那么这可能会让您的生活更轻松一些:

  • cfmail 和 cfmailparam 标签现在有一个 remove 属性,它告诉 ColdFusion 在邮件成功投递后删除所有附件。
  • cfmailparam 标记现在有一个内容属性,允许您将 ColdFusion 变量的内容作为附件发送。为此,请将 # 符号中的变量指定为内容属性值,如下例所示: file 属性指定要包含在邮件头中的文件名,而不是 ColdFusion 系统上的文件

从:

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

于 2009-04-23T16:37:17.083 回答
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 )#"
/>
于 2014-05-12T15:50:43.777 回答
1

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

于 2017-08-01T11:40:12.743 回答