我正在创建一个创建自定义PDF的应用程序,邮寄它然后将其删除。我已经分别测试了所有3个组件并且它们可以工作但是当我把它们放在一起时,电子邮件不会发送。
在发送电子邮件之前,附件是否可能被删除,即使删除是在脚本之后?
这是我的代码。
<!---Get the PDF--->
<cfscript>
PDFBuilder = createobject("component", "form_admin.email.PDFBuilder" );
pdf = PDFBuilder.createPDF(form_id);
</cfscript>
<!---Create link to the pdf --->
<cfscript>
foo = expandPath('../email/tmp/') & pdf & '.pdf';
</cfscript>
<!---Create email--->
<cfmail to="will@hazardousfrog.com"
from="will@hazardoufrog.com"
subject="Jag intrest form. "
type="text/html" >
<cfmailparam file="#foo#">
Dear #getEmail.title#, #getEmail.first_name# #getEmail.surname# <br />
Attached is a PDF boucher telling you more information about the cars you were interested in. <br />
Best wishes <br />
Jaguar <br /><br /><br /><br /><br /><br /><br /><br />
This is not actually jaguar this is a test application by Hazardousfrog.
</cfmail>
<!---Delete the file after it has been sent --->
<cfif FileExists(#foo#)>
<cffile action="delete"
file="#foo#">
<cfelse>
<cfoutput >
error
</cfoutput>
<cfabort>
</cfif>
对不起,如果代码不是很好,我只做了2周的CF。
答案 0 :(得分:4)
好的,我设法得到了工作朋友的答案。
处理cfmail后,邮件会保存到假脱机中,并在约3分钟后定期发送。 在我的情况下,这意味着在邮件发送之前删除了电子邮件PDF附件,因此邮件没有发送。
coldFusion mail tag有一个属性可以立即发送或保持假脱机。
spoolenable:是否假脱机或始终立即发送。
为了让我的代码能够运行,我将这一行添加到我的邮件属性中。
spoolenable="false"
答案 1 :(得分:4)
另一个选择是使用cfmailparam标记的remove属性,它将告诉CF在发送文件后删除该文件。这样你的可欺骗属性就可以是真的,它应该按照需要工作。 remove属性是在8.0.1版中引入的。
答案 2 :(得分:1)
我还会在cfmail代码周围放置fileExists()
,确定是否确实创建了pdf文件。