PHP发送到Outlook PDF文件

时间:2014-12-08 12:48:18

标签: php pdf outlook fpdf

我用fpdf用于创建pdf with php。一切都好。但我想发送pdf文件到outlook。

我正在使用$pdf->Output('file.pdf','D');

正在运行。我想将此文件附加到microsoft outlook。

我怎么能这样?

1 个答案:

答案 0 :(得分:1)

您可以执行的操作是将文件保存到服务器上的临时位置,然后使用PHPMailer之类的内容将该已保存的文件附加到电子邮件中。与PHP的内置mail函数相比,PHPMailer更易于使用附件。

您可以通过多种方式临时存储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 . "--";