我使用 fpdf 用 php 创建 pdf。一切都好。但我想将 pdf 文件发送到 outlook。
我正在使用 $pdf->Output('file.pdf','D');
它正在运行。我想将此文件附加到 Microsoft Outlook。
我怎么能这样?
最佳答案
您可以做的是将文件保存到服务器上的一个临时位置,然后使用类似PHPMailer 的东西。将该保存的文件附加到电子邮件中。 PHPMailer 比 PHP 的内置 mail
更容易用于附件功能。
您可以通过多种方式临时存储 PDF 文件。这是一个:
$tempfilename = time().'.pdf';
$pdf->Output($tempfilename,'F');
然后在 PHPMailer 中,您可以这样附加它:
$mail->addAttachment($tempfilename);
完成后,您可以从服务器上删除临时文件。
unlink($tempfilename);
如果出于任何原因 PHPMailer 无法用于您的情况,您可以使用 PHP 的内置 mail
功能。如果您正在处理新文件或小文件,其中添加 PHPMailer 的成本相对较小,请尽可能这样做。否则,您可以尝试将这样的代码添加到您的 $headers
中。改编自关于使用 mail
to send attachments 的回答:
// Generate a random hash to send mixed content
$sep = md5(time());
// End of line
$eol = PHP_EOL;
// Content of file
$content = file_get_contents($tempfilename);
$content = chunk_split(base64_encode($content));
// Add attachment to headers
$headers .= "--" . $sep . $eol;
$headers .= "Content-Type: application/octet-stream; name=\"" . $tempfilename . "\"" . $eol;
$headers .= "Content-Transfer-Encoding: base64" . $eol;
$headers .= "Content-Disposition: attachment" . $eol . $eol;
$headers .= $content . $eol . $eol;
$headers .= "--" . $sep . "--";
关于PHP 发送到 Outlook PDF 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27358410/