【问题标题】:PHP Swift Mailer attach FPDF ProblemsPHP Swift Mailer 附加 FPDF 问题
【发布时间】:2012-08-28 02:19:36
【问题描述】:

我在尝试让 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 将文件保存在我的网络服务器上,它肯定是可能的。

这可能吗?如果有,怎么做?

谢谢!

【问题讨论】:

    标签: php email attachment fpdf swiftmailer


    【解决方案1】:

    这里的问题是 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);
    

    【讨论】:

    • 我不确定我是否正确理解了您的代码。它对我不起作用,我看不到您在 createPDF.php?id=xxx URL 中指定 $id 变量的位置。如果我可以临时保存 createPDF.php?id=xxx 文件或基于 ID 变量的东西,动态地 - ID 需要根据我需要发送的 PDF 进行更改。然后在发送电子邮件后,删除这个临时文件。如果我能做到这一点,那就行得通。另请注意,我从服务器上的不同文件发送电子邮件。 sendemail.php 位于不同的文件夹中。 createPDF.php 在 / 文件夹中。
    • 您应该编辑您的 createPDF.php 以不从 $_GET 设置 id,而只使用 $id,并确保它保存到 $filename。
    • 我这样做了,但还是不行。我的代码中有更多错误。您能否向我展示一个示例,说明如何格式化 createPDF.php 页面和我的其他功能(在另一个页面中)以发送电子邮件?我基本上将它设置在另一个 PHP 文件中的 sendEmail() 之类的函数中。如果有人点击他们个人资料中的链接,我仍然希望能够让 createPDF.php 能够内联显示 PDF。所以我有:createPDF.php 另一个带有函数 sendEmail(){} 的 PHP 文件
    【解决方案2】:

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

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

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

    效果很好。

    感谢您的帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-12
      • 2011-06-07
      • 1970-01-01
      • 2019-11-30
      • 1970-01-01
      • 2014-02-11
      • 2011-01-30
      • 1970-01-01
      相关资源
      最近更新 更多