1

カスタム 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>

コードが良くない場合は申し訳ありませんが、私はCFを2週間ほどしかやっていません。

4

3 に答える 3

4

もう1つのオプションは、cfmailparamタグのremove属性を使用することです。これにより、CFは、送信後にファイルを削除するように指示されます。このようにして、spoolenable属性をtrueにすることができ、必要に応じて機能するはずです。remove属性は、バージョン8.0.1で導入されました。

于 2012-08-30T11:06:22.290 に答える
4

わかりました、仕事の友人から答えを得ることができました。

cfmail が処理されると、メールはスプールに保存され、約 3 分後に定期的に送信されます。私の場合、メッセージが送信される前に電子メールの PDF 添付ファイルが削除されたため、メールが送信されなかったことを意味していました。

coldFusion メール タグには、すぐに送信するか、スプールしたままにするかを指定する属性があります。

spoolenable : メールをスプールするか、常にすぐに送信するか。

したがって、コードを機能させるために、この行をメール属性に追加しました。

spoolenable="false"
于 2012-08-30T09:54:51.447 に答える
1

またfileExists()、pdf ファイルが実際に作成されたかどうかについて、cfmail コードの前後に配置します。

于 2012-08-30T09:59:36.183 に答える