2011-11-09 16 views
7

Ho già provato diverse soluzioni, la più vicina (per me) dovrebbe essere simile a questo:Come inviare PDF generati da TCPDF come allegato Swiftmailer

$file = $pdf->Output('', 'E'); 
$message->attach(Swift_Attachment::newInstance($file, 'name.pdf', 'application/pdf')); 

$pdf è un'istanza di TCPDF e $message è un'istanza di Swift_Message . Usando sopra l'e-mail viene inviata ok, il file è allegato ma quando provo ad aprirlo ricevo il messaggio di errore che il file è corrotto o mal codificato.

La mia domanda è: come inviare pdf generato da TCPDF come allegato Swiftmailer senza salvare il file sul server e cancellarlo dopo aver inviato l'e-mail. Here è il collegamento alla documentazione del metodo di output TCPDF, forse qualcuno può vedere qualcosa che ho perso.

risposta

0

Hai provato questo?

$file = $pdf->Output('', 'S'); 

sto facendo questo con un altro backend di posta in PHP, e questo funziona. Immagino che il backend di posta si occupi di codificare l'allegato, quindi non è necessario codificarlo come base64 manualmente.

+0

Provato questo, provato ancora e ancora non funziona (stesso errore msg) – matino

+0

Se si salva il file nel filesystem, è possibile aprirlo? Se sì, allora è un errore swiftmailer. Allora almeno sai dove guardare oltre. – Markus

+0

Se salvi il file e lo allego con $ message-> attach (Swift_Attachment :: fromPath ($ path)); allora è tutto ok – matino

4

Non ho avuto problemi nel collegare TCPDF al volo.

io chiamo una funzione che finalmente restituisce il PDF utilizzando il tipo di uscita 'S':

return $pdf->Output('TE_Invoice.pdf', 'S');

ho allegare il file utilizzando:

$message->attach(Swift_Attachment::newInstance() 
    ->setFilename('TE_Invoice.pdf') 
    ->setContentType('application/pdf') 
    ->setBody($val['file'])); 

Dove $val['file'] è il valore restituito da sopra.

Sto usando TCPDF Versione: 5.9.134 e Swift Mailer Versione: 4.1.3

+0

Ecco come ho provato a farlo ma dopo aver aperto il pdf in e-mail ho ricevuto il messaggio di errore che il file è corrotto o mal codificato ... – matino

8

sto usando qualcosa di simile e sta funzionando. Per il contenuto PDF sto usando uno degli esempi più semplici nella libreria PDF.

[...] 
$pdf_as_string = $pdf->Output('', 'S'); // $pdf is a TCPDF instance 
[...] 
$transport = Swift_MailTransport::newInstance(); // using php mail function 
$message->setTo(array(
    "[email protected]" => "Main Email", 
    "[email protected]" => "Secondary Email" 
)); 
$message->setSubject("This email is sent using Swift Mailer"); 
$message->setBody("You're our best client ever."); 
$message->setFrom("[email protected]", "Developers United"); 
$attachment = Swift_Attachment::newInstance($pdf_as_string, 'my-file.pdf', 'application/pdf'); 
$message->attach($attachment); 
[...] 

Forse questa risposta arriva un po 'in ritardo dal momento che sto usando swiftmailer v4_3_0 e TCPDF v6_0_002. Ma nel caso valga la pena per qualcuno.

+0

questo ha aiutato, grazie. – afinom

+0

Questo ha funzionato anche per MPDF. Molte grazie. Ecco un riferimento: http://stackoverflow.com/a/34785821/386579 –

Problemi correlati