Lenguaje PHP

Enviar correo electrónico con archivo adjunto en php

Enviar correo electrónico con archivo adjunto en php. La temática de email es muy usada en los sistemas web. La mayoría de aplicaciones web para optimizar el alcance de su plataforma hace uso de este recurso, ya sea para enviar boletines, avisos e informaciones de la plataforma. Si la aplicación web que desarrollo usa PHP, es muy fácil enviar el Email desde el PHP.

Enviar correo electrónico con archivo adjunto en php

El lenguaje PHP proporciona funciones para enviar correo electrónico desde el sitio Web. Usando la función mail () en PHP, se puede enviar texto, imagen o un archivo adjunto. En este pequeño artículo, veremos cómo enviar correo electrónico con adjunto en php. Nuestro ejemplo de script hace que sea simple enviar texto o correo HTML incluyendo cualquier tipo de archivo como un archivo adjunto usando PHP.

Enviar correo HTML con adjunto

La función Email de php () con algunos encabezados de tipo MIME se utiliza para enviar correo electrónico con archivo adjunto en php.

  1. Debe especificar el correo electrónico del destinatario ($to).
  2. El nombre del remitente ($fromName).
  3. El correo electrónico del remitente ($from).
  4. El asunto ($Subject), el archivo que se adjuntará ($File)
  5. El contenido del cuerpo que se enviará ($htmlContent).

La siguiente secuencia de códigos le permite enviar el tipo de mensaje (texto o HTML) con archivo adjunto al correo electrónico deseado.

<?php
//Recipiente
$to = 'recipiente@miexample.com';

//remitente del correo
$from = 'remitente@miexample.com';
$fromName = 'BaulPHP';

//Asunto del email
$subject = 'Correo electrónico PHP con datos adjuntos de BaulPHP'; 

//Ruta del archivo adjunto
$file = "mipdf.pdf";

//Contenido del Email
$htmlContent = '<h1>Correo electrónico PHP con datos adjuntos de BaulPHP</h1>
    <p>Este correo electrónico ha enviado desde script PHP con datos adjuntos.</p>';

//Encabezado para información del remitente
$headers = "De: $fromName"." <".$from.">";

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

//Encabezados para archivo adjunto 
$headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\""; 

//límite multiparte
$message = "--{$mime_boundary}\n" . "Content-Type: text/html; charset=\"UTF-8\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" . $htmlContent . "\n\n"; 

//preparación de archivo
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: base64\n\n" . $data . "\n\n";
    }
}
$message .= "--{$mime_boundary}--";
$returnpath = "-f" . $from;

//Enviar EMail
$mail = @mail($to, $subject, $message, $headers, $returnpath); 

//Estado de envío de correo electrónico
echo $mail?"<h1>Correo enviado.</h1>":"<h1>El envío de correo falló.</h1>";

Conclusión

La breve explicación les sacara de un apuro, eso sí utilizando la implementación correcta del script. Aquí hemos proporcionado la forma fácil de enviar correo electrónico con archivo adjunto.
Para este ejemplo no es necesario incluir ninguna librería para enviar correo HTML con adjunto. Usando la función de php () puede enviar fácilmente correo electrónico con adjunto a cualquier destinatario.

Enviar correo electrónico con archivo adjunto en php
Enviar correo electrónico con archivo adjunto en php

 

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

16 comentarios

  1. hola

    yo lo implemente y me marca error.

    Warning: Undefined variable $i in C:\xampp\htdocs\EstacionaTec\generadorqr.php on line 66

    Warning: String offset cast occurred in C:\xampp\htdocs\EstacionaTec\generadorqr.php on line 66
    El envío de correo falló.

    si pudieran ayudarme se los agradeceria. Saludos.

  2. Buen día.

    Muy bueno tu codigo amigo pero al momento de yo ponerlo y el archivo ser una imagen que pesa tan solo 1.2MB no se envia el correo y la pagina me muestra el siguiente error: «Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 1720320 bytes)» eso con archivos que pesan arriba de 500kb

  3. Buenas tardes, tengo un sitio creado pero solo puedo enviar imagenes adjuntas.
    NEcesito poder adjuntar un archovo PDF fijo (Siempre el mismo)
    Podrás ayudarme si te envio el código?

    Gracias!

  4. Hola buena noche, necesito ayuda con esto me sale dos errores en la misma línea, reviso el código y efectivamente las variables $files y $i no exiten, quien me ayuda?
    Notice: Undefined variable: files in C:\xampp\htdocs\prueba\correo.php on line 43
    Notice: Undefined variable: i in C:\xampp\htdocs\prueba\correo.php on line 43

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Esta web utiliza cookies propias para su correcto funcionamiento. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad