使用 MPDF 发送 PDF 电子邮件

Sending PDF email with MPDF

我已经设置了系统,点击按钮时,合同以 pdf 格式发送 attached.I 我已经使用 mpdf 将电子邮件发送到所需的电子邮件地址。 下面的代码在我的本地主机上运行良好并且正确地完成了工作但是当我把它放在服务器上时,它没有显示任何错误但也没有发送任何电子邮件因为我没有收到任何东西。 你能帮我弄清楚我做错了什么吗?

// Setup PDF
    $mpdf = new mPDF('utf-8', 'Letter', 0, '', 0, 0, 0, 0, 0, 0); // New PDF object with encoding & page size
    ob_start();
    $mpdf->setAutoTopMargin = 'stretch'; // Set pdf top margin to stretch to avoid content overlapping
    $mpdf->setAutoBottomMargin = 'stretch'; // Set pdf bottom margin to stretch to avoid content overlapping
    $mpdf->WriteHTML($stylesheet,1); // Writing style to pdf
    $mpdf->WriteHTML($html); // Writing html to pdf
    // FOR EMAIL
    $content = $mpdf->Output('', 'S'); // Saving pdf to attach to email 
    $content = chunk_split(base64_encode($content));
    $emailto = 'abc@abc.com';
    //The function to send email when the contract is requested
    $recepients = array(
      $email,
      'abc@abc.com'
      );
    $mailto = implode(',', $recepients);
    $from_name = 'Random Project';
    $from_mail = 'abc@abc.com';
    $replyto = 'abc@abc.com';
    $uid = md5(uniqid(time())); 
    $subject = 'Wedding Contract Form';
    $message =  '
      </<!DOCTYPE html>
      <html>
      </style> 
      <body>
      <img src="http://tanglewoodestate.com.au/assets/contract-header.png" width="400px">
      <div width ="300px" style="background-color:#f5e9dd;padding:10px">
      <p>Hi <strong>'.$cname.'</strong>,<p>
      <p>Please Find the <strong>attached contract</strong> from the Tanglewood Estate.</p>
      <p>For any questions or queries,Please contact Us at:<br>
      ABC<br>
      abc@abc.com<br>
      </div>
      <img src="http://tanglewoodestate.com.au/assets/contract-footer.png" width="400px">
      </body>
      </html>';
    $filename = 'Wedding_contract.pdf';
    $header = "From: ".$from_name." <".$from_mail.">\r\n";
    $header .= "Reply-To: ".$replyto."\r\n";
    $header .= "MIME-Version: 1.0\r\n";
    $header .= "Content-Type: multipart/mixed; boundary=\"".$uid."\"\r\n\r\n";
    $header .= "This is a multi-part message in MIME format.\r\n";
    $header .= "--".$uid."\r\n";
    $header .= "Content-type:text/html;charset=UTF-8\r\n";
    $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
    $header .= $message."\r\n\r\n";
    $header .= "--".$uid."\r\n";
    $header .= "Content-Type: application/pdf; name=\"".$filename."\"\r\n";
    $header .= "Content-Transfer-Encoding: base64\r\n";
    $header .= "Content-Disposition: attachment; filename=\"".$filename."\"\r\n\r\n";
    $header .= $content."\r\n\r\n";
    $header .= "--".$uid."--";
    $is_sent = @mail($mailto, $subject, "", $header);
    //$mpdf->Output(); // For sending Output to browser

    //$mpdf->Output('Wedding_contract.pdf','D'); // For Download
    ob_end_flush();
    }

答案摘自线程:mPDF Auto Generated PDF Mailer sends blank Email by https://whosebug.com/users/3818025/drehx

所以,我只是使用 PHP Mailer 来发送电子邮件。只是张贴这个来帮助任何想用它作为例子的人:

try {

$mail = new PHPMailer; 
$mail->AddAddress($email);
$mail->AddAddress('abc@abc.com');
$mail->AddAddress('abc@abc.com');
$mail->SetFrom('abc@abc.com');
$mail->AddReplyTo('abc@abc.com');
$mail->Subject = 'Tanglewood Contract';
$mail->AltBody = 'To view the message, please use an HTML compatible email viewer!'; // optional - MsgHTML will create an alternate automatically
$mail->isHTML(true);
$mail->Body = '</<!DOCTYPE html>
  <html>
  </style> 
  <body>
  <img src="http://tanglewoodestate.com.au/assets/contract-header.png" width="400px">
  <div width ="300px" style="background-color:#f5e9dd;padding:10px">
  <p>Hi <strong>'.$cname.'</strong>,<p>
  <p>Please Find the <strong>attached contract</strong> from the Tanglewood Estate.</p>
  <p>For any questions or queries,Please contact Us at:<br>
  Tanglewood Estate<br>
  abc@abc.com<br>
  </div>
  <img src="http://tanglewoodestate.com.au/assets/contract-footer.png" width="400px">
  </body>
  </html>';

//$mail->MsgHTML("*** Form attached! Please see the attached form (.pdf).");
$mail->AddStringAttachment($content, $filename = 'TanglewoodContract.pdf',
      $encoding = 'base64',
      $type = 'application/pdf');      // attachment
if (isset($_FILES['attached']) &&
    $_FILES['attached']['error'] == UPLOAD_ERR_OK) {
    $mail->AddAttachment($_FILES['attached']['tmp_name'],
                         $_FILES['attached']['name']);
}
$mail->Send();
echo "<div style='margin-left:4%;'>Message Sent OK</div>\n";
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}