23/10PHPMailer

Ú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:
  1. <?php
  2. require(“class.phpmailer.php”);
  3.  
  4. $mail = new PHPMailer();
  5.  
  6. $mail->From = “hanok@ejemplo.com”;
  7. $mail->FromName = “Hanok”;
  8. $mail->AddAddress(“destino@ejemplo.com”, “Destino”);
  9. $mail->AddAddress(“destino2@ejemplo.com”)// El nombre es opcional
  10. $mail->AddReplyTo(“destinocopia@ejemplo.com”, “Information”);
  11.  
  12. $mail->WordWrap = 50;
  13. $mail->AddAttachment(“/ruta/al/archivo/documento.zip”);         // Añadimos Documentos
  14. $mail->AddEmbeddedImage(“/ruta/al/archivo/logo.jpg”, “logo”, “logo.jpg”); //Imagen embebida en el mensaje
  15. $mail->IsHTML(true);                                  // Activamos el formato HTML
  16. $mail->Subject = “Asunto del mail”;
  17.  
  18. $mail->Body = “Este es mi logotipo: <img xsrc=”cid:logo” alt=”Logo” width=”85” height=”75”/>”;
  19. $mail->AltBody = “Si el cliente de correo del destinatario no acepta HTML se verá este texto.”;
  20.  
  21. if(!$mail->Send())
  22. {
  23. echo “Se ha producido un error al enviar el correo.”;
  24. echo “Mailer Error: “ . $mail->ErrorInfo;
  25. }
  26.  
  27. echo “El correo ha sido enviado con exito.”;
  28. ?>

comentarios

  1. 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…

    responder »

    paolo

    5/11/07 @ 4:47

    comentarios recientes

  2. 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.

    responder »

    hanok

    6/11/07 @ 12:30

    comentarios recientes

  3. 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

    responder »

    jhonny

    9/04/08 @ 9:28

    comentarios recientes

  4. @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!

    responder »

    hanok

    9/04/08 @ 10:08

    comentarios recientes

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

    responder »

    Brian

    2/05/08 @ 0:36

    comentarios recientes

  6. @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.

    responder »

    hanok

    2/05/08 @ 11:45

    comentarios recientes

  7. 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.

    responder »

    PEDRO

    3/06/08 @ 10:19

    comentarios recientes

deja tu respuesta