我遇到一些问题,试图让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服务器上的情况下使用。
这可能吗?如果是这样,怎么样?
谢谢!
答案 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。
效果很好。
感谢您的帮助!