sábado, 6 de junio de 2009

Envio de correos con PHPMailer

PHPMailer es una clase escrita en PHP que facilita el envío de correo, añadiendo facilidad en el envío de correos con adjuntos, en formato HTML y con diferentes codificaciones, soporte para imagenes embebidas, headers personalizados y además funciona con múltiples servidores de correo.

El primer paso es descargar PHPMailer, aquí encontraremos dos archivos: class.phpmailer.php el cual contiene las funciones para el envío de correo y class.smtp.php para enviar correo mediante servidores SMTP.

yo lo he utilizado con mi cuenta de yahoo y su servidor smtp y funciona sin ningun problema.

Aqui les dejo el ejemplo que hice:

//en el directorio includes deberan estar class.phpmailer.php y class.smtp.php
// primero hay que incluir la clase phpmailer para poder instanciar un objeto de la misma

require "includes/class.phpmailer.php";
//instanciamos un objeto de la clase phpmailer
$mail = new phpmailer();

//Con PluginDir le indicamos a la clase phpmailer donde seencuentra la clase smtp

$mail->PluginDir = "includes/";

//Con la propiedad Mailer le indicamos que vamos a usar un servidor smtp
$mail->Mailer = "smtp";

//Asignamos a Host el nombre de nuestro servidor smtp
$mail->Host = "smtp.mail.yahoo.com";

//Le indicamos que el servidor smtp requiere autenticación
$mail->SMTPAuth = true;

//Le decimos cual es nuestro nombre de usuario y password
$mail->Username = "cuenta@yahoo.com.mx";
$mail->Password = "password";

//Indicamos cual es nuestra dirección de correo y el nombre que queremos que vea el usuario que lee nuestro correo
$mail->From = "cuenta@yahoo.com.mx";
$mail->FromName = "Nombre a mostrar p/e Pedrito Andrade";

//el valor por defecto 10 de Timeout lo cambiamos por 30
$mail->Timeout=30;

//Indicamos cual es la dirección de destino del correo
$mail->AddAddress("cuenta@destino.com");

//Asignamos asunto y cuerpo del mensaje
//El cuerpo del mensaje lo ponemos en formato html, haciendo
//que se vea en negrita

$mail->Subject = "Probando phpmailer";
$mail->Body = "Mensaje de prueba mandado con phpmailer en formato html";

//Definimos AltBody por si el destinatario del correo no admite email con formato html
$mail->AltBody = "Mensaje de prueba mandado con phpmailer en formato solo texto";

//se envia el mensaje, si no ha habido problemas
//la variable $exito tendra el valor true

$exito = $mail->Send();

//Si el mensaje no ha podido ser enviado se realizaran 4 intentos mas como mucho
//para intentar enviar el mensaje, cada intento se hara 5 segundos despues
//del anterior, para ello se usa la funcion sleep

$intentos=1;
while ((!$exito) && ($intentos < 5)) {
sleep(5);
$exito = $mail->Send();
$intentos=$intentos+1;
}//while

if(!$exito)
{
echo "Problemas enviando correo electrónico a ".$valor;
echo "
".$mail->ErrorInfo;
}
else
{
echo "Mensaje enviado correctamente";
}
?>

ShareThis