2

我正在使用cfmail标签发送电子邮件,并尝试从 URL 附加 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 文档。难道我做错了什么?如何通过URL将 PDF 文档附加到电子邮件?

4

4 回答 4

3

如果您要发送 HTML 电子邮件,为什么不直接链接到 PDF?这使得电子邮件更小,即使在 PDF 发送出去后,您也有机会更新它。

于 2011-07-12T14:09:13.677 回答
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>
于 2011-07-11T13:29:48.093 回答
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>

未测试

于 2011-07-11T14:57:55.397 回答
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#" />

这适用于特殊的 URL(例如:http://myfilelocation/pdfFile.pdf?querystring=1http://myfilelocation/notPdfFileName/)并且还允许我们根据需要命名文件

于 2017-10-06T13:29:36.930 回答