使用MPDF发送PDF电子邮件

时间:2017-07-21 00:31:28

标签: php wordpress email mpdf

我已经设置了系统,在点击按钮时,合同将附带pdf发送。我使用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();
    }

1 个答案:

答案 0 :(得分:0)

答案取自mPDF Auto Generated PDF Mailer sends blank Email

的主题:https://stackoverflow.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!
}