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."; ?>