【问题标题】:How do I generate and email a PDF generated with DOMPDF at the same time?如何同时生成和通过电子邮件发送使用 DOMPDF 生成的 PDF?
【发布时间】:2017-07-14 20:13:37
【问题描述】:

我在使用 DOMPDF 库生成 pdf 并同时通过邮件发送时遇到问题。

我需要的是在你点击html中的按钮的那一刻生成并同时发送pdf文件;到目前为止,只向我发送已生成 pdf 的邮件,但我需要生成和发送 pdf。 首先将数据收集到数据库中,然后使用数据库中的最新记录生成 pdf。

我希望有人可以帮助我。

谢谢

注意:不使用框架

【问题讨论】:

    标签: php jquery mysql dompdf


    【解决方案1】:

    您必须使用 PHP 的内置 SMTP 函数或使用诸如 PHPMailer 之类的库(不是框架)

    生成 PDF 后,将其保存在服务器上的某个位置,保留 PDF 文件的完整路径并调用邮件脚本以发送带有附件的邮件(附件为 PDF)

    使用 PHP Mailer 可能看起来像这样:

    $mail = new PHPMailer;
    $mail->addAddress('your_email@example.com');
    $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”

    【讨论】:

      【解决方案2】:

      试试这个

      <?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('test@gmail.com'))
      
          ->setTo(array('test@gmail.com'))
      
          ->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");
          }
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-03
        • 2011-04-24
        • 2018-02-21
        • 2011-03-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-04-02
        相关资源
        最近更新 更多