1

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

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

->attach(Swift_Attachment::fromPath('createPDF.php?id=xxxx'))

这不起作用,但可以肯定的是,如果不通过 FPDF 将文件保存在我的 Web 服务器上,它肯定是可能的。

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

谢谢!

4

2 回答 2

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);
于 2012-08-28T03:24:34.063 回答
0

好的,所以我刚刚想通了。

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

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

效果很好。

谢谢你的帮助!

于 2012-08-28T08:51:17.803 回答