Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [Codeigniter] TCPDF e email con allegato

    salve!
    ho integrato TCPDF in codeigniter, e risco a creare i file pdf.
    solo che vorrei che il file fosse direttamente allegato alla email.
    nel controller ho fatto così:
    Codice PHP:
                $titolo 'Prova';
                
    $pdf = new Pdf(PDF_PAGE_ORIENTATIONPDF_UNITPDF_PAGE_FORMATtrue'UTF-8'false);
                
    $pdf->SetCreator(PDF_CREATOR);
                
    $pdf->SetTitle($titolo);
                
    $pdf->SetHeaderData(PDF_HEADER_LOGOPDF_HEADER_LOGO_WIDTH$titolo);
                
    $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN''PDF_FONT_SIZE_MAIN));
                
    $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA''PDF_FONT_SIZE_DATA));
                
    $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
                
    $pdf->SetMargins(PDF_MARGIN_LEFTPDF_MARGIN_TOPPDF_MARGIN_RIGHT);
                
    $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
                
    $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
                
    $pdf->SetAutoPageBreak(TRUEPDF_MARGIN_BOTTOM);
                
    $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
                
    $pdf->SetFont('dejavusans'''10);
                
    $pdf->AddPage();
                
    $pdf->Write(5'Ciao');
                
    $pdf->lastPage();
                
    $attach $pdf->Output($titolo '.pdf''E');

                
    $messaggio 'Ciao';
                
    $this->email_model->sendEmail(emailProva$messaggiochunk_split($attach)); 
    questo invece la classe che invia l'email:
    Codice PHP:
    <?php

    class Email_model extends CI_Model {

        public function 
    sendEmail($to$subject$message$attach NULL) {
            
    $this->load->library('email');
            
    $this->email->initialize(array(
                
    'mailtype' => 'html',
                
    'charset' => 'utf-8'
            
    ));
            
    $this->email->from(emailDA ME);
            
    $this->email->to($to);
            
    $this->email->subject($subject);
            
    $this->email->message($message);
            
    $this->email->attach($attach);
            
    $this->email->send();
        }

    }
    se non metto l'allegato l'email arriva con il testo.
    se invece gli passo l'allegato l'email arriva, ma senza ne testo ne allegato.
    secondo voi è possibile fare quello che sto cercando di fare?

  2. #2
    inizia a fare

    Codice PHP:
    echo $this->email->print_debugger(); 
    e vedi cosa ti da... poi ne riparliamo.
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  3. #3
    eccomi qua:
    codice:
    Unable to locate the following email attachment: 
    Content-Type: application/pdf; name="file.pdf"
    Content-Transfer-Encodi ng: base64 Content-Disposition: attachment; 
    filename="file.pdf" JVB
    ERi0xLjcKJeLjz9MKOCAwIG9iago8PCAvVHlwZSAvUGFnZSAvUGFyZW50IDEgMCB.....................
    
    User-Agent: CodeIgniter
    Date: Thu, 4 Apr 2013 15:59:32 +0100
    From: ".........." 
    Return-Path: 
    Reply-To: "......." 
    X-Sender: ........
    X-Mailer: CodeIgniter
    X-Priority: 3 (Normal)
    Message-ID: <515d95543ad1e@gmail.com>
    Mime-Version: 1.0
    Content-Type: multipart/mixed; boundary="B_ATC_515d95543adb3"
    
    
    =?utf-8?Q?Ordine_Eshop?=
    da quanto vedo pare che non trovi il file.
    uhm, forse qualche problema di permessi su qualche directory temp?

  4. #4
    penso che l'errore sia sul modo in cui gestisci il file pdf.

    Il pdf lo devi generare con apposito metodo all'interno di un tuo controller tale che sia raggiungibile per mezzo di un URL valido.

    A quel punto $attach sarà tale URL e non il sorgente del file (come hai fatto te).

    -------------

    giusto per prova prova ad indicare come parametro $attach un normale pdf "statico" esistente e con URL assoluto.
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  5. #5
    stesso identico errore.
    però sinceramente non ho ben capito il suo suggerimento.
    il file pdf è già dentro al controller, è l'invio dell'email che non lo è.

  6. #6
    risolvi un problema alla volta...

    invia la mail con allegato, iniziando dal caso di un pdf "statico".
    Puoi descrivere il modo in cui hai fatto il test che ti ho suggerito? (posta un pò di codice)
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  7. #7
    il codice per mandare le email è quello postato sopra.
    Codice PHP:
    class Email_model extends CI_Model {

        public function 
    sendEmail($to$subject$message$attach NULL) {
            
    $this->load->library('email');
            
    $this->email->initialize(array(
                
    'mailtype' => 'html',
                
    'charset' => 'utf-8'
            
    ));
            
    $this->email->from(emailDA ME);
            
    $this->email->to($to);
            
    $this->email->subject($subject);
            
    $this->email->message($message);
            
    $this->email->attach($attach);
            
    $this->email->send();
        }


    nel controller ho fatto semplicemente questo:
    Codice PHP:
    $this->email_model->sendEmail($to$subject$messaggio'http://www.sito.it/files/file.pdf'); 
    ho messo un percorso assoluto come mi hai detto.

  8. #8
    ok, così ho risolto il problema dei file statici:
    Codice PHP:
    $this->email_model->sendEmail($to$subject$messaggio'../files/file.pdf'); 
    non dovevo passargli un url ma un path.

    adesso rimane il problema vero.

  9. #9
    ho aggirato il problema salvando il pdf su sul server e poi mettendo quel file come allegato.
    per certi versi forse è anche meglio così ha tutti i vari salvati.
    Codice PHP:
    $pdf->Output('../DIR/' $titolo '.pdf''F');
    $this->email_model->sendEmail($to$subject$messaggio'../DIR/' $titolo '.pdf'); 
    ciao!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.