2011-07-11 48 views
2

我使用cfmail標籤發送電子郵件,並試圖從URL中附加一個PDF文件:如何將文件附加到來自網址的電子郵件?

<cfmail to="[email protected]" from="[email protected]" subject="Subject" type="html"> 
    <cfmailparam file="http://myfilelocation/pdfFile.pdf"> 
    Body of the email 
</cfmail> 

但是,這是行不通的。沒有cfmailparam標籤,電子郵件發送成功。如果我去http://myfilelocation/pdffile.pdf,我會看到我正在附加的PDF文檔。難道我做錯了什麼?我如何從一個URL附加PDF文檔到電子郵件

+2

如果在發送文件命名爲一封HTML郵件,爲什麼不直接鏈接到PDF? –

+0

@保羅PERIGNY - 高招:)不知道爲什麼我們沒有想到這一點。只是跑過了我的老闆的想法,並獲得批准:)謝謝! (如果您將其作爲答案發布,我可以接受) – froadie

回答

3

如果是發送HTML電子郵件,爲什麼不直接鏈接到直接PDF?這使得更小的電子郵件,並使您有機會更新PDF後,即使它被髮送出去。

2

cfmailparam file應該指向你的服務器上的位置。這個文件然後附加到電子郵件:

<cfmail to="[email protected]" from="[email protected]" subject="Subject" type="html"> 
<cfmailparam file="d:\websites\mysite\resources\pdf1.pdf"> 
    Body of the email 
</cfmail> 
+0

有沒有辦法從網址做到這一點? – froadie

+0

@froadie你想避免什麼問題?是您的服務器或其他地方的pdf嗎? – Antony

+0

別的地方... – froadie

1

您可以使用CFHTTP檢索您的文件到您的服務器和getTempFile()|| getTempDirectory()臨時存儲這個文件並最終使用CFMAILPARAM來附加這個文件。

編輯:

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

<cfmail to="[email protected]" from="[email protected]" subject="Subject" type="html"> 
   <cfmailparam file="#tempFile#"> 
   Body of the email 
</cfmail> 

未測試

+0

示例代碼,好嗎? – froadie

+0

對不起,我當然已經太晚了,但我編輯了我的帖子 – LarZuK

+0

應該是 Micah

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/),也使我們能夠爲我們所需要

相關問題