【问题标题】:codeigniter send pdf file as email attachmentcodeigniter 将 pdf 文件作为电子邮件附件发送
【发布时间】:2013-03-19 14:30:20
【问题描述】:

我正在使用 TCPDF 即时生成 pdf 文件。通过使用 TCPDF,我得到了 base64 编码的原始文件,现在我想使用codeigniter 电子邮件助手功能将此原始数据作为电子邮件附件发送。

如何做到这一点?

【问题讨论】:

  • 您需要将其保存为服务器上的文件,然后附加。
  • 有没有办法不保存文件到服务器?
  • 是的,您必须扩展电子邮件库并更改一些方法(特别是_build_message())以接受原始文件内容而不是文件路径。浏览库,您会看到它如何处理附件。扩展和更改以满足您的需求。

标签: php codeigniter email tcpdf


【解决方案1】:

花了我一段时间才找到答案,希望它对将来的任何人有所帮助:

    // Get email address and base64 via ajax
    $email = $this->input->post('email');
    $base64 = $this->input->post('base64');

    $base64 = str_replace('data:application/pdf;base64,', '', $base64);
    $base64 = str_replace(' ', '+', $base64);

    $data = base64_decode($base64);

    // Locally emails do now work, so I use this to connect through my gmail account to send emails
    $config = Array(
        'protocol' => 'smtp',
        'smtp_host' => 'ssl://smtp.googlemail.com',
        'smtp_port' => 465,
        'smtp_user' => 'MyEmailAddress@gmail.com',
        'smtp_pass' => 'MyEmailPassword',
        'mailtype'  => 'html', 
        'charset'   => 'iso-8859-1'
    );

    $this->load->library('email', $config);

    $this->email->set_newline("\r\n");
    $this->email->to($email);
    $this->email->from('noreply@whatever.ca', 'base64');
    $this->email->subject('base64');
    // Using the string_attach($str_file, $filename, $mime, $disposition = 'attachment')
    // function located in CodeIgniter\application\libraries\Email.php
    $this->email->string_attach($data, 'base64.pdf', 'application/pdf');

    $this->email->send();

【讨论】:

    【解决方案2】:
      $newFile  = 'Path/to/save/filename.pdf';
      $obj = new $this->pdf;
      $obj->SetSubject('BLAH BLAH'); // set document information
      $obj->SetKeywords('Blah, Blah, Blah'); 
      $obj->AddPage(); // add a page
      $obj->SetFont('helvetica', '', 6);
      $obj->writeHTML("Your text goes here", true, false, false, false, '');
      $obj->Output($newFile, 'F'); //Close and output PDF document
    

    【讨论】:

      【解决方案3】:
       /*its batter to make function*/ 
      
       /*-------COPY THIS CODE---- */
      
        $newFile  = 'Path/to/save/filename.pdf';
        $obj = new $this->pdf;
        $obj->SetSubject('BLAH BLAH'); // set document information
        $obj->SetKeywords('Blah, Blah, Blah'); 
        $obj->AddPage(); // add a page
        $obj->SetFont('helvetica', '', 6);
        $obj->writeHTML("Your text goes here", true, false, false, false, '');
        $obj->Output($newFile, 'F'); //Close and output PDF document
      
       /*-------SENDING EMAIL---- */
      
       $this->load->library('email');
       $this->email->from('noreply@example.com', 'Example');
       $this->email->to('to@example.com');
       $this->email->subject('Subject Goes Here');
       $this->email->message('Message goes here');
       $this->email->attach($newFile);
       $this->email->send();
      

      【讨论】:

        【解决方案4】:

        您必须先保存文件,然后才能将其与电子邮件一起附加

              $obj = new $this->pdf;
              $obj->SetSubject('BLAH BLAH'); // set document information
              $obj->SetKeywords('Blah, Blah, Blah'); 
              $obj->AddPage(); // add a page
              $obj->SetFont('helvetica', '', 6);
              $obj->writeHTML("Your text goes here", true, false, false, false, '');
              $obj->Output('Path/to/save/filename.pdf', 'F'); //Close and output PDF document
        

        然后像这样发送电子邮件

             $this->load->library('email');
             $this->email->from('noreply@example.com', 'Example');
             $this->email->to('to@example.com');
             $this->email->subject('Subject Goes Here');
             $this->email->message('Message goes here');
             $this->email->attach('Path/to/saved/filename.pdf');
             $this->email->send();
        

        【讨论】:

        • 我知道这一点,但我想发送电子邮件而不在我的服务器上保存 pdf。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-23
        • 1970-01-01
        • 1970-01-01
        • 2020-12-05
        • 2014-01-10
        相关资源
        最近更新 更多