PHPMailer

23 octubre, 2006

Últimamente en el curro me ha surgido la necesidad de enviar mails mediante PHP. Hasta ahora siempre tuve el problema de que las imágenes que usaba en el HTML del cuerpo del mensaje para que quedara bonito, se tenían que cargar dinámicamente una vez que abrias el mensaje desde una ruta en internet. El problema era que si el usuario leía el mail una vez desconectado, estas imágenes no se cargaban y lo que en un principio era un HTML bonito se queda en una trapallada.

Además, no sabía como incluir archivos adjuntos. Buscando por la web me encontré con PHPMailer.

PHPMailer

Con esta clase de PHP se pueden enviar mails de forma sencilla, adjuntando archivos, embebiendo imágenes en el mensaje para no tener que cargarlas dinámicamente, etc… Veamos un ejemplo sencillo:

[php]< ?php require("class.phpmailer.php"); $mail = new PHPMailer(); $mail->From = “hanok@ejemplo.com”;
$mail->FromName = “Hanok”;
$mail->AddAddress(“destino@ejemplo.com”, “Destino”);
$mail->AddAddress(“destino2@ejemplo.com”);  // El nombre es opcional
$mail->AddReplyTo(“destinocopia@ejemplo.com”, “Information”);

$mail->WordWrap = 50;
$mail->AddAttachment(“/ruta/al/archivo/documento.zip”);         // Añadimos Documentos
$mail->AddEmbeddedImage(“/ruta/al/archivo/logo.jpg”, “logo”, “logo.jpg”); //Imagen embebida en el mensaje
$mail->IsHTML(true);                                  // Activamos el formato HTML
$mail->Subject = “Asunto del mail”;

$mail->Body = “Este es mi logotipo: Logo“;
$mail->AltBody = “Si el cliente de correo del destinatario no acepta HTML se verá este texto.”;

if(!$mail->Send())
{
echo “Se ha producido un error al enviar el correo.”;
echo “Mailer Error: ” . $mail->ErrorInfo;
exit;
}

echo “El correo ha sido enviado con exito.”;
?>[/php]

  • paolo

    bueno tenia las siguientes dudas:

    si uso la clase phpmailer:

    que necesito de requisitos para que me funcione:

    necesito el servidor smtp?
    solo eso?

    si lo necesito dime…cual me recomiendas porq utilizo el smtp free pero ese solo deja mandar 10 mensajes al dia.

    necesito algun tipo de cuenta especial…

  • Hola,
    Ni siquiera necesitas servidor SMTP. Aunque PHPMailer te da opción al SMTP, puedes enviar los correos a través de la función mail de PHP.
    Si te fijas en el ejemplo que puse en ningún momento le digo al PHPMailer que use SMTP para enviar el correo.
    Saludos.

  • jhonny

    Buenas noches disculpa acabe de correr tu ejemplo cambiando, las direcciones y no adjuntando los archivos y me aparece el siguiente error:
    Se ha producido un error al enviar el correo.Mailer Error: Language string failed to load: instantiate

    ¿Que crres que pueda ser?
    muchas gracias por la ayuda de antemano

  • @jhonny: además del archivo class.phpmailer.php es necesario tener un php del idioma, en mi caso phpmailer.lang-es.php. Comprueba que tienes este archivo previamente.
    Saludos!

  • ¿la clase podria presentar errores por no tener el phpmailer.lang-es.php? si es cierto donde instalamos el php de idioma ?

  • @Brian: Si te fijas en el error que le daba en el comentario superior era por no encontrar el archivo de idioma para mostrar un mensaje. No se realmente si es del todo necesario, habría que preguntarle al autor de la clase si hay alguna forma de omitir el uso de los archivos de idioma. En mi caso siempre lo uso para tener los mensajes en español, tan solo hay que incluir el archivo de idioma en el mismo directorio que el archivo de la clase de phpmailer.

  • Hola, me funciona todo. Pero quiero que el valor de AddAttachment venga dado por un campo input type=”file”, con lo cual en vez de poner una ruta, debemos poner una variable que contenga el valor de dicho campo input.

  • Bob

    Hooooooooooola use es te codigo pero el problemita que se me presenta es que nose Adjuntan los datos HAAAAAAAAAA. no que hacer y tb el correo que llega claro sin el dato adjunto, llega como correo no deceado, y no asi ami bandeja de entrada

  • Bob

    puede alguien decirme como puedo arreglar eso

  • bob

    hoooooooooooooooola ya use este cod esta bueno , pero lo malo es que te llega el correo , pero sin el dato adjunto, puede alguien decirme como puedo solucionar esto…..mequiero volver MONO!………..gracias
    cualquier comentario o sugerencia me lo envian a : nick_b182@hotmail.com

  • @bob: revisa la web oficial de PHPMailer y su documentación. Dispones de una sección de tutoriales y contacto donde podrás encontrar solución a tu problema.

  • tatiana

    a mi me da fallo a la hora de enviar imagenes, algunas las envia y otra no. sabrias decirme el porque?¿

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.