0

Enviar Correos con Archivos Adjuntos Usando PHP Mail

Comparte

📬 ¿Qué aprenderás?

En este tutorial aprenderás a enviar un email con uno o varios archivos adjuntos usando PHP puro, utilizando el protocolo MIME para incluir los datos del archivo en el correo.


⚙️ Requisitos:

  • Servidor con soporte PHP (como XAMPP, WAMP o hosting PHP).
  • La función mail() habilitada en tu servidor.

🛠️ Código PHP para Enviar un Correo con Archivo Adjunto

<?php
if (isset($_POST['enviar'])) {
    $destino = "admin@tusitio.com"; // Cambiar por tu email real
    $asunto = "Correo con archivo adjunto";
    $mensaje = "Te adjunto el archivo solicitado.";
    
    $archivo = $_FILES['archivo']['tmp_name'];
    $nombreArchivo = $_FILES['archivo']['name'];
    
    $contenidoArchivo = chunk_split(base64_encode(file_get_contents($archivo)));
    $uid = md5(uniqid(time()));
    $header = "From: webmaster@tusitio.com\r\n";
    $header .= "MIME-Version: 1.0\r\n";
    $header .= "Content-Type: multipart/mixed; boundary=\"" . $uid . "\"\r\n\r\n";
    $header .= "This is a multi-part message in MIME format.\r\n";
    $header .= "--" . $uid . "\r\n";
    $header .= "Content-type:text/plain; charset=UTF-8\r\n";
    $header .= "Content-Transfer-Encoding: 7bit\r\n\r\n";
    $header .= $mensaje . "\r\n\r\n";
    $header .= "--" . $uid . "\r\n";
    $header .= "Content-Type: application/octet-stream; name=\"" . $nombreArchivo . "\"\r\n";
    $header .= "Content-Transfer-Encoding: base64\r\n";
    $header .= "Content-Disposition: attachment; filename=\"" . $nombreArchivo . "\"\r\n\r\n";
    $header .= $contenidoArchivo . "\r\n\r\n";
    $header .= "--" . $uid . "--";

    if (mail($destino, $asunto, "", $header)) {
        echo "<p>Correo enviado correctamente.</p>";
    } else {
        echo "<p>Error al enviar el correo.</p>";
    }
}
?>

🧾 Formulario HTML para Seleccionar el Archivo

<form action="" method="POST" enctype="multipart/form-data">
  <label>Selecciona un archivo para enviar:</label><br>
  <input type="file" name="archivo" required><br><br>
  
  <input type="submit" name="enviar" value="Enviar Correo">
</form>

🔎 Notas importantes:

  • Asegúrate que tu servidor permite el envío de correos (mail() debe estar habilitada).
  • Algunos servidores locales requieren configuración especial para sendmail.
  • Para un envío más profesional o con varios adjuntos, puedes considerar librerías como PHPMailer.




codigo fuente gratis

Deja una respuesta

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