2011-10-31 241 views
10

¿Cuál es la forma más fácil de adjuntar un PDF a un correo electrónico a través de DOMPDF?DOMPDF - adjuntar PDF creado al correo electrónico

El final de mi script que estoy usando (parte de ella) es a continuación:

$dompdf = new DOMPDF(); 
$dompdf->load_html($html); 
$dompdf->render();  
//below to save the pdf file - not needed if emailing pdf 
file_put_contents('/home/ststrave/public_html/pdf/STS_Brochure.pdf', $dompdf->output()); 
//below to open pdf in browser - required 
$dompdf->stream("STS_Brochure_".rand(10,1000).".pdf", array("Attachment" => false)); 
jexit(); 

Sólo una aclaración - esto se está utilizando en Joomla.

Apreciar la forma más simple/más rápida utilizando la función de correo PHP estándar.

Saludos ;-)

+0

¿Has mirado en el uso [de Joomla objeto incorporado mail] (http://docs.joomla.org/How_to_send_email_from_components)? – BrianS

Respuesta

0

función de correo de PHP no tiene un método archivo adjunto "estándar". Es una interfaz extremadamente simple para el sistema SMTP que te obliga a hacer TODO el trabajo de adjuntar un archivo tú mismo.

Sugiero usar PHPMailer o Swiftmailer para hacer el correo electrónico para usted - reduce el trabajo pesado de generar su propio correo MIME e insertar el archivo adjunto (muchas líneas de código) hace tal vez 5 líneas en total.

Tenga en cuenta que ninguno de ellos manejará un archivo PDF en tiempo real desde DOMPDF. Deberá guardar el PDF en un archivo temporal y adjuntarlo,

+0

Gracias por la respuesta ... entonces, ¿cómo hago esto? – user991830

23

Ok. Usted ya aceptó una respuesta, pero para cualquier otra persona que venga aquí, creo que hay una manera más fácil, pero tampoco es la función de correo estándar de PHP, que realmente no va a funcionar. Si puede obtener los paquetes pera Mail y Mail_mime, es realmente fácil enviar correos electrónicos con archivos adjuntos. También puede conectar directamente la salida DOMPDF sin crear un archivo, así:

$dompdf = new DOMPDF(); 
$dompdf->load_html($html); 
$dompdf->set_paper("letter", "portrait"); 
$dompdf->render(); 

$output = $dompdf->output(); 

$mm = new Mail_mime("\n"); 

$mm->setTxtBody($body); 
$mm->addAttachment($output,'application/pdf','output.pdf', false); 

$body = $mm->get(); 
$headers = $mm->headers(array('From'=>$from,'Subject'=>$subject)); 

$mail =& Mail::factory('mail'); 
if($mail->send($to,$headers,$body)){ 
    echo "Your message has been sent."; 
} 
Cuestiones relacionadas