Enviar correos con archivos adjuntos utilizando PHP y PHPMailer

En PHP sólo existe una opción para enviar correos electrónicos que es la instrucción mail($destinatario, $asunto, $mensaje).
Esto es útil para mandar mensajes sencillos pero se nos queda corto cuando queremos hacer cosas más complicadas que también las puede hacer aunque resulta muy incómodo sobre todo a la hora de adjuntar archivos a un mensaje ya que hay que codificar el contenido, truncarlo en trozos de 8 bytes, establecer el tipo MIME, añadir delimitadores antes y después del archivo, especificar cabeceras…

Existe una utilidad para mandar correo elctrónico con PHP llamada PHPMailer que puede ser descargada en http://phpmailer.codeworxtech.com/. Tiene licencia GPL.
Se trata de una clase que implementa gran cantidad de funciones útiles para la creación y envío de mensajes de correo electrónico. Su uso es realmente sencillo. Voy a explicar un ejemplo muy breve de como adjuntar un archivo mediante un formulario y enviarlo a la dirección de correo deseada.

Para utilizar PHPMailer, una vez descargado, es necesario descomprimir el paquete y copiar el archivo llamado ˜class.phpmailer.php˜ al include_dir de php.ini o a la carpeta donde guardamos nuestros scripts.

El ejemplo consta de dos partes, el formulario para la introducción de datos y el script que recoge y envía la información.

1 – Formulario [index.html]


<html>
<head><title>Formulario de contacto</title></head>
<body>
<form name="form_contacto" method="POST" action="procesar.php" 
enctype="multipart/form-data">
Nombre: <input type="text" name="nombre" /><br />
Edad: <input type="text" name="edad" /><br />
Foto: <input type="file" name="foto" /><br /><br />
<input type="submit" value="Enviar">
</form>
</body>
</html>

2 – Script PHP [procesar.php]


<?php
//recogida de información
$nombre = $_POST[˜nombre˜];
$edad = $_POST[˜edad˜];
$foto = $_FILES[˜foto˜];

//validamos la información (ejemplo muy sencillo)
$errores = array();
if ($nombre == ""){
  $errores[] = "Falta nombre";
}
if ($edad == ""){
  $errores[] = "Falta edad";
}
if ($foto[˜name˜] == "" || $foto[˜size˜] == 0){
  $errores[] = "Falta la foto";
}

//si hay errores se muestran y se sale del programa
if (count($errores) > 0){
  echo "Se han encontrado los siguientes errores:<br />";
  foreach($errores as $error){
    echo $error."<br />";
  }
  
  die("<a href=˜index.html˜>Atrás</a>");
}

//se compone el mensaje
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->Host = "localhost";
$mail->From = "web@localhost";
$mail->FromName = "Servidor web";
$mail->Subject = "Socio nuevo";
$mail->AddAddress("altas@localhost", "Altas");
$body = "Nuevo sociorn";
$body .= "Nombre: $nombrern";
$body .= "Edad: $edadrn";
$mail->Body = $body;
//adjuntamos un archivo
$mail->AddAttachment($foto[˜tmp_name˜], $foto[˜name˜]);
$mail->Send();

echo "Solicitud enviada. Gracias.";
?>
Sin categoría

Deja una respuesta