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