我用fpdf用于创建pdf with php。一切都好。但我想发送pdf文件到outlook。
我正在使用$pdf->Output('file.pdf','D');
正在运行。我想将此文件附加到microsoft outlook。
我怎么能这样?
答案 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 . "--";