Enviar un email con adjuntos en PHP

Enviar un email a través de un script es una característica la mar de útil en toda aplicación de que se precie. La mayoría de sitios web suelen utilizar el envío de correos electrónicos para hacer llegar a sus usuarios diversas notificaciones. Si tu aplicación web utiliza PHP, es muy fácil envíar correos electrónicos.

PHP te proporciona un método sencillo para enviar correos desde la web. Mediante la función mail() de PHP, puedes enviar tanto texto como HTML. Pero hay veces que eso de envíar únicamente texto o HTML se queda un pelín corto y necesitamos adjuntarles archivos a dichos correos. En este tutorial te explicaremos cómo enviar emails con adjuntos con PHP.

Cómo enviar un email con adjuntos

La función mail() de PHP puede utilizarse también para enviar emails con adjuntos, solo hay que configurar las cabeceras del correo correctamente. Además, para enviar el correo tendrás que especificar el email destinatario ($to), el nombre de quien lo envía ($fromName), el asunto ($subject), el email de quien lo envía ($from), el archivo a adjuntar ($file) y el contenido o cuerpo del correo ($htmlContent). El siguiente script te permite envíar tanto correos en HTML como en texto con ficheros adjuntos.

<?php
//recipient
$to = '[email protected]';

//sender
$from = '[email protected]';
$fromName = 'Programacion.net';

//email subject
$subject = 'PHP Email with Attachment'; 

//attachment file path
$file = "archivo.pdf";

//email body content
$htmlContent = '<h1>PHP Email with Attachment</h1>
    <p>This email has sent from PHP script with attachment.</p>';

//header for sender info
$headers = "From: $fromName"." <".$from.">";

//boundary 
$semi_rand = md5(time()); 
$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 

//headers for attachment 
$headers .= "nMIME-Version: 1.0n" . "Content-Type: multipart/mixed;n" . " boundary="{$mime_boundary}""; 

//multipart boundary 
$message = "--{$mime_boundary}n" . "Content-Type: text/html; charset="UTF-8"n" .
"Content-Transfer-Encoding: 7bitnn" . $htmlContent . "nn"; 

//preparing attachment
if(!empty($file) > 0){
    if(is_file($file)){
        $message .= "--{$mime_boundary}n";
        $fp =    @fopen($file,"rb");
        $data =  @fread($fp,filesize($file));

        @fclose($fp);
        $data = chunk_split(base64_encode($data));
        $message .= "Content-Type: application/octet-stream; name="".basename($file).""n" . 
        "Content-Description: ".basename($files[$i])."n" .
        "Content-Disposition: attachment;n" . " filename="".basename($file).""; size=".filesize($file).";n" . 
        "Content-Transfer-Encoding: base64nn" . $data . "nn";
    }
}
$message .= "--{$mime_boundary}--";
$returnpath = "-f" . $from;

//send email
$mail = @mail($to, $subject, $message, $headers, $returnpath); 

//email sending status
echo $mail?"<h1>Mail sent.</h1>":"<h1>Mail sending failed.</h1>";

Fuente: codexworld.com

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP