我正在使用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文档附加到电子邮件来自网址?
答案 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=1或http://myfilelocation/notPdfFileName/),也允许我们根据需要命名文件