PHP Swift Mailer附加FPDF问题

时间:2012-08-28 02:19:37

标签: php email attachment fpdf swiftmailer

我遇到一些问题,试图让SwiftMailer附加我用FPDF创建的文件。基本上我有一个名为createPDF.php的页面,它是根据URL中的ID号动态生成的。此页面设置为使用$ pdf->输出(“filename.pdf”,I);输出PDF内联。我想要做的是只需通过调用我的createPDF.php?id = xxx链接就可以使用SwiftMailer从另一个页面将此文件附加到电子邮件中。

从我要发送电子邮件的PHP页面,一切正常,但附件除外。它附加了一些东西,但不是我想要的东西,它在本地机器上的PDF查看器中是不可见的。特定于附加文件的行是:

- >附加(Swift_Attachment :: fromPath( '?createPDF.php来ID = XXXX'))

这不起作用,但当然,必须可以在不通过FPDF将文件保存在我的Web服务器上的情况下使用。

这可能吗?如果是这样,怎么样?

谢谢!

2 个答案:

答案 0 :(得分:0)

这里的问题是Swiftmailer获取文件内容,它不执行你的php文件。因此,PDF的内容将是createPDF.php中的代码。

为什么你不能先保护文件?您应该能够保护它并在发送电子邮件时将其删除。

 <?php 
 $id = "xxx";
 $fileName = "tmp/".sha1(time()+mt_rand(0,99999999));
 include "createPDF.php"; //saves it to $fileName
 ->attach(Swift_Attachment::fromFile( $fileName )->setFilename('blaha.pdf'));
 unlink($fileName);

答案 1 :(得分:0)

好的,所以我想出来了。

基本上我创建了一个新的PHP文件,其中包含大量的createPDF.php文件作为函数,并简单地将两个变量作为我的$ id和$ output变量传递给函数。 $ output就是FPDF输出文件的方式 - 内联等...然后我设置函数返回FPDF的输出。在我的createPDF.php文件中,我只是调用我的函数传入$ id和'​​I'作为变量,因此它在浏览器中显示正确的PDF内联。

在我的sendEmail函数中,我只是传入$ id和'​​S'并将其设置为变量$ content,我将其作为附件传递给SwiftMailer。

效果很好。

感谢您的帮助!