Я конвертировал HTML в PDF, но изо всех сил пытался отправить PDF с PHPmailer - PullRequest
0 голосов
/ 10 мая 2018

Мне удалось создать PDF-файл из моей HTML-страницы, но я не смог отправить PDF-файл в виде вложения с помощью phpmailer. Пожалуйста, смотрите мой код ниже. Чего мне не хватает?

Ключевые моменты:

  1. HTML (tractpage2.php) хорошо отображает в PDF
  2. PHPmailer работает, но отправляет только $ сообщение без вложения.
  3. Проблема в том, что pdf не прикрепляет почту

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
    
require 'PHPMailer/src/PHPMailer.php';
require 'PHPMailer/src/SMTP.php';
require 'PHPMailer/src/Exception.php';


//reference the dompdf namescape

use Dompdf\Dompdf;

//initialise dompdf class


// get/setup the htmlpage

ob_start();
require("tractpage2.php"); // The html document
$page = ob_get_contents();
ob_end_clean();

// convert to pdf

$document = new Dompdf();
$document->set_option('defaultFont', 'Courier');
$document->load_html($page);

// set paper orientation

$document->set_paper('A4', 'portrait');

// Render the HTML as PDF
$document->render();

// Output the generated PDF to Browser
$document->stream("contract.pdf", array("Attachment"=>0));

//1 = download
//0= preview

$fileupload = $document->output();

// setup email 

$message = "Am new to programming and loving it";



 $mail = new PHPMailer;                             

    //Server settings
    $mail->SMTPDebug = 2;                                 // Enable verbose debug output
    $mail->isSMTP();                                      // Set mailer to use SMTP
    $mail->Host = 'smtp.gmail.com';  // Specify main and backup SMTP servers
    $mail->SMTPAuth = true;                               // Enable SMTP authentication
    $mail->Username = 'xxxx@gmail.com';                 // SMTP username
    $mail->Password = 'xxxxxx';                           // SMTP password
    $mail->SMTPSecure = 'ssl';                            // Enable TLS encryption, `ssl` also accepted
    $mail->Port = 465;                                    // TCP port to connect to

    //Recipients
    $mail->setFrom('xxxxx@gmail.com', 'james');
    $mail->addAddress('xxxx@aol.com', 'name of receiver');     // Add a recipient
    $mail->addAddress('xxxxx@yahoo.com');               // Name is optional
 
    //Attachments
   $mail->addAttachment($fileupload);         // Add attachments
 
 

    //Content

    $mail->isHTML(true);                                  // Set email format to HTML
    $mail->Subject = 'Here is the subject';
    $mail->Body    = $message;
    $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

   if ($mail->send()){
    echo 'Message has been sent';}
else { echo 'Message could not be sent.';}
    
   



?>

1 Ответ

0 голосов
/ 10 мая 2018

Вы хотели бы создать свой файл на сервере и сохранить, а затем передать абсолютный путь к файлу pdf в addAttachment, или вы также можете напрямую присоединить вывод DomPDF без создания файла, например:

$mail->addAttachment($fileupload,'application/pdf','output.pdf', false);
...