2017-02-24 1 views
1

J'ai un problème en utilisant la bibliothèque DOMPDF pour générer un pdf et en même temps l'envoyer par la poste. Ce dont j'ai besoin, c'est que le moment où vous cliquez sur un bouton en html est généré et envoyé le fichier pdf en même temps; Jusqu'à présent, envoyez-moi seulement le mail avec un pdf déjà généré, mais j'ai besoin que le pdf soit généré et envoyé. Les données sont collectées d'abord dans une base de données, puis le fichier PDF est généré avec l'enregistrement le plus récent dans la base de données.Comment générer et envoyer par e-mail un PDF généré avec DOMPDF en même temps?

J'espère que quelqu'un peut m'aider.

Merci

Remarque: sans utiliser les cadres

Répondre

0

Vous devez utiliser soit les fonctions SMTP intégré de PHP ou utiliser une bibliothèque telle que PHPMailer (pas un cadre)

Une fois votre fichier PDF généré, enregistrez-le quelque part sur le serveur, gardez le chemin complet vers le fichier PDF et appelez un script mail pour envoyer le mail avec une pièce jointe (la pièce jointe étant le fichier PDF)

Utiliser PHP Mailer pourrait ressembler à quelque chose comme ceci:

$mail = new PHPMailer; 
$mail->addAddress('[email protected]'); 
$mail->addAttachment('/path/to/your/file.pdf', 'name as shown in the email.pdf'); 
$mail->send(); 

Bien sûr, vous auriez à configurer votre courrier avec l'hôte d'où il sera envoyé, l'authentification, etc ... mais ce n'était pas ce que vous avez demandé.

Il suffit de remplacer /path/to/your/file.pdf avec ce que le chemin est + nom de votre fichier PDF (sur le serveur) et remplacez-name as shown in the email.pdf avec le nom que vous voulez que le destinataire du courrier électronique à voir, par exemple « invoice.pdf »

0

Essayez cette

<?php 
define('DBHOST','localhost'); 
define('DBNAME','user'); 
define('DBUSER','root'); 
define('PASS',''); 
$dbh = new PDO('mysql:host='.DBHOST.';dbname='.DBNAME,DBUSER,PASS); 
$q_sel="SELECT name,email from user_details"; 
$stmt_query=$dbh->prepare($q_sel); 
$user_detail_exe=$stmt_query->execute(); 
$user_details=$stmt_query->fetchAll(); 
?> 
<html> 
    <head> 
     <title> 
      Send Email Generating Dompdf 
     </title> 
    </head> 
    <body> 
     <form action="send_email.php"> 
      <input type="submit" value="EMAIL" /> 
      <table style="width:100%" border="1"> 
       <tr> 
        <th>Name</th> 
        <th>Email</th> 
       </tr> 
       <?php 
       foreach ($user_details as $user_detail) 
       { 
       ?> 
        <tr> 
         <td><?php echo $user_detail['name'];?></td> 
         <td><?php echo $user_detail['email'];?></td>    
        </tr> 
       <?php 
       } 
       ?> 
      </table> 
     </form> 
    </body> 
</html> 

send_email.php

<?php 
$name='user_detaiil.pdf'; 
require_once 'dompdf/dompdf_config.inc.php'; 
require_once 'Swift/lib/swift_required.php'; 
define('DBHOST','localhost'); 
define('DBNAME','user'); 
define('DBUSER','root'); 
define('PASS',''); 
$dbh = new PDO('mysql:host='.DBHOST.';dbname='.DBNAME,DBUSER,PASS); 
$q_sel="SELECT name,email from user_details"; 
$stmt_query=$dbh->prepare($q_sel); 
$user_detail_exe=$stmt_query->execute(); 
$user_details=$stmt_query->fetchAll(); 
$pdf_data='<html> 
      <body> 
       <table style="width:100%" border="1"> 
        <tr> 
        <th>Name</th> 
        <th>Email</th> 
        </tr>'; 
        foreach ($user_details as $user_detail) 
        { 

         $pdf_data.='<tr> 
          <td>'.$user_detail['name'].'</td> 
          <td>'.$user_detail['email'].'</td>   
         </tr>'; 
        } 

       $pdf_data.='</table> 
      </body> 
     </html>'; 


    $dompdf=new DOMPDF(); 
    $dompdf->load_html($pdf_data); 
    $dompdf->render(); 
    $canvas =$dompdf->get_canvas(); 
    $date = date("d/m/Y"); 
    $canvas->page_text(10, 770,"Date: $date" , $font, 12); 
    $canvas->page_text(520, 770, "Page: {PAGE_NUM}", $font, 12); 
    $output = $dompdf->output(); 
    $file_to_save = 'reports/user_detail.pdf'; 
    file_put_contents($file_to_save, $output); 
    //$dompdf->stream($name); 
    ob_start(); 
    $HasFunctions = true; 
    $SendsMail = true; 

    $message = Swift_Message::newInstance() 

    ->setSubject('User Detail Report') 

    ->setFrom(array('[email protected]')) 

    ->setTo(array('[email protected]')) 

    ->setBody($messagetext, 'text/html'); 

    $message->attach(Swift_Attachment::fromPath("reports/user_detail.pdf")); 

    $transport = Swift_SmtpTransport::newInstance("smtp.fake.com", 25) 
    ->setUsername("Username") 
    ->setPassword("Password"); 

    $mailer = Swift_Mailer::newInstance($transport); 

    $result = $mailer->send($message); 

    unlink("reports/user_detail.pdf"); 
    if($result) 
    { 
     header("LOCATION:dompdf.php"); 
    } 
?>