当前位置: 首页 > 知识库问答 >
问题:

PHP Mailer->PDF to Email提供空白PDF作为附件

东门修文
2023-03-14

我使用PHP Mailer将交互式PDF发送到电子邮件地址。这可以在本地将脚本从PDF调用到服务器,但在服务器上完成PDF时不起作用。

代码如下:

<?php
if(!isset($HTTP_RAW_POST_DATA)) {
    echo "The Application could not be sent. Please save the PDF and email it manually.";
    exit;
}
echo "<html><head></head><body><img src='loading.gif'>";

//Create PDF file with data
$semi_rand = md5(time());
$pdf = $HTTP_RAW_POST_DATA;

 $file = $semi_rand . ".pdf"; 
 $handle = fopen($file, 'w+');
 fwrite($handle, $pdf);   
 fclose($handle);
//

require_once('class/class.phpmailer.php');
include("class/class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded

$mail = new PHPMailer(false); // the true param means it will throw exceptions on errors, which we need to catch
$mail -> CharSet = "UTF-8";

$mail->IsSMTP(); // telling the class to use SMTP

try {
  $mail->Host       = "HOST"; // SMTP server
  $mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
  $mail->SMTPAuth   = true;                  // enable SMTP authentication
  $mail->SMTPSecure = "ssl";                 // sets the prefix to the servier
  $mail->Host       = "HOST";
  $mail->Port       = 465;
  $mail->Username   = "USERNAME";
  $mail->Password   = "PASSWORD";
  $mail->AddAddress('TO ADDRESS');
  $mail->SetFrom('FROM ADDRESS');
  $mail->Subject = 'SUBJECT';
  $mail->Body = 'Please see attachment';
  $mail->IsHTML(true);
  $mail->AddAttachment($file); // attachment
  $mail->Send();

  //Delete the temp pdf file then redirect to the success page
  // unlink($file);
  echo '<META HTTP-EQUIV="Refresh" Content="0; URL="1.1.1.1">';    
  exit;    
} catch (phpmailerException $e) {
  //you can either report the errors here or redirect them to an error page
  //using the above META tag
  echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
  echo $e->getMessage(); //Boring error messages from anything else!
}
  //Verify the temporary pdf file got deleted
  unlink($file);
?>

我是不是错过了什么?$mail的所有值(主机、用户名、密码等)都是正确的——但是当它创建要发送的PDF时,它只是通过

共有1个答案

牟焱
2023-03-14

您不能使用fwrite创建PDF,例如简单的txt或csv文件。它是一种更复杂的文件类型。

查看DomPDF,对于您的设置,它可能看起来有点像下面(假设$HTTP_RAW_POST_DATA是一个html文档):

require("dompdf_config.inc.php");

$semi_rand = md5(time());
$pdf = file_get_contents('http://www.pdfpage.com/');
$file = $semi_rand . ".pdf"; 

$dompdf = new DOMPDF();
$dompdf->load_html($pdf);
$dompdf->set_paper('a4', 'portrait');
$dompdf->render();
$dompdf->stream($file,  array('Attachment' => '0'));

...
// USE $file as needed in email attachment
 类似资料:
  • 没有空白的GUI显示为“拥挤”。我如何提供空白而不需要明确地设置元件的位置或尺寸?………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

  • 我刚刚开始学习angular和IONIC来构建一个应用程序。 我刚刚启动了一个包含离子的新应用程序,并从json文件中列出了一个项目列表。这很好用,但由于im跳入路由,我只看到一个空白页,我没有犯错误。 这是我的索引。html: 这是maapp.js文件: 这应该是我回家的模板(home.html) 我只是不明白这是怎么回事,也许你看到了一个错误? 提前谢谢 卢克

  • 我使用phpmailer发送一个大约5米的大附件,但失败了。这是留言。 致命错误:F:\wamp\www\mail\class中超过了30秒的最大执行时间。smtp。php在线580 时间记忆功能定位 1 0.0010 146208{main}()。。\邮寄。php:0 2 0.0121 533592 smtp_邮件()。。\邮寄。菲律宾比索:65 3 0.0126 539672 PHPMaile

  • 我怀疑它没有正确解密,因为它能够拉动表单的文本提示,但不能拉动响应本身。在下面的代码中,它从示例PDF中提取和,但不是它们之间的响应。 我正在使用PDFBox2.0,但我也尝试过1.8。 我已经尝试了所有的解密方法,我可以找到的PDFBox,包括不推荐的那些(为什么不)。我得到的结果与完全不尝试解密一样,只是地址和城市提示。

  • 版本: 离子型4,类型=角型,cordova v7。0 当我试图运行命令:离子科尔多瓦运行Android我的应用程序运行模拟器完美(设备版本7.1 API 25),但当我试图安装应用程序到我的物理设备版本4.4.2(API 19)我看到空白屏幕。 在我的配置中。xml文件我看到: 我能做什么呢? 其他详细信息从调试与Android Studio:

  • 问题内容: 使用下面的代码片段中,我试图从提取文本数据这个PDF文件。 但是,我获得的输出在大多数单词之间没有空格。这使得很难对文本执行自然语言处理(我的最终目标在这里)。 同样,单词“ finger”中的“ fi”始终被解释为其他含义。这是相当有问题的,因为本文是关于手指的自发运动的。 有人知道为什么会这样吗?我什至不知道从哪里开始! 问题答案: 您的PDF文件没有可打印的空格字符,只是将单词放