如何将文件附加到来自网址的电子邮件?

时间:2011-07-11 13:23:30

标签: file email url coldfusion cfmail

我正在使用cfmail标记发送电子邮件,并尝试从网址附加PDF文件:

<cfmail to="me@mydomain.com" from="you@yourdomain.com" subject="Subject" type="html">
   <cfmailparam file="http://myfilelocation/pdfFile.pdf">
   Body of the email
</cfmail>

但是,这不起作用。如果没有cfmailparam标记,则电子邮件会成功发送。如果我转到http://myfilelocation/pdffile.pdf,我会看到我正在尝试附加的PDF文档。难道我做错了什么?如何将PDF文档附加到电子邮件来自网址

4 个答案:

答案 0 :(得分:3)

如果您要发送HTML电子邮件,为什么不直接链接到PDF?这样可以生成较小的电子邮件,即使在发送完毕后也可以更新PDF。

答案 1 :(得分:2)

cfmailparam file应指向服务器上的某个位置。然后将此文件附加到电子邮件:

<cfmail to="me@mydomain.com" from="you@yourdomain.com" subject="Subject" type="html">
<cfmailparam file="d:\websites\mysite\resources\pdf1.pdf">
   Body of the email
</cfmail>

答案 2 :(得分:1)

您可以使用CFHTTP将文件检索到服务器并使用getTempFile()|| getTempDirectory()临时存储此文件,最后使用CFMAILPARAM附加此文件。

编辑:

<cfset tempFile = getTempDirectory(getTempFile()) />
<cfhttp url="http://myfilelocation/pdfFile.pdf" method="get" file="#tempFile#"></cfhttp>

<cfmail to="me@mydomain.com" from="you@yourdomain.com" subject="Subject" type="html">
   <cfmailparam file="#tempFile#">
   Body of the email
</cfmail>

未经测试

答案 3 :(得分:0)

您的代码仅适用于文本文件。对于其他文件,我们需要转换数据。见下文:

<cfhttp method="get" url="http://myfilelocation/pdfFile.pdf">
<!---conversion--->
<cfif IsSimpleValue(cfhttp.Filecontent)>
    <cfset content = cfhttp.Filecontent>
<cfelse>
    <cfset content = cfhttp.Filecontent.toByteArray()>
</cfif>

和cfmailparam一样:

<cfmailparam file="#fileNameOfYourChoice#" type="#cfhttp.Mimetype#" content="#content#" />

这适用于特殊网址(例如:http://myfilelocation/pdfFile.pdf?querystring=1http://myfilelocation/notPdfFileName/),也允许我们根据需要命名文件