2017-02-24 79 views
1

我有一個問題,使用DOMPDF庫來生成PDF,並在同一時間通過郵件發送。如何生成並通過電子郵件發送與DOMPDF同時生成的PDF?

我需要的是,當你點擊html中的一個按鈕時,就會生成並同時發送pdf文件;到目前爲止,只發送給我一個已經生成pdf的郵件,但我需要生成併發送pdf。 首先在數據庫中收集數據,然後使用數據庫中的最新記錄生成pdf。

我希望有人能幫助我。

謝謝

注:不使用框架

回答

0

你可以選擇使用內置的PHP的SMTP功能或使用庫如PHPMailer的(沒有框架)

生成PDF後,將其保存在服務器上的某個位置,按住PDF文件的完整路徑並調用郵件腳本以發送帶有附件的郵件(附件爲PDF)

使用PHP郵件程序可能看起來像這個:

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

當然,你必須配置你的郵件與主機從它將被髮送,驗證等等......但這不是你要求的。

只需更換/path/to/your/file.pdf與任何路徑是+ PDF文件的文件名(在服務器上),並與你想要的郵件的接收者看到的名稱替換name as shown in the email.pdf,例如「invoice.pdf」

0

試試這個

<?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"); 
    } 
?> 
相關問題