votar

PHPMailer

Publicada el 23/10/2006 a las 01:10 y leída 2385 veces. Traducir ao galego Traducir ao galego.

Ú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]

dolcebita

  • @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.
  • 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
    puede alguien decirme como puedo arreglar eso
  • 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
  • PEDRO
    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.
  • @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.
  • ¿la clase podria presentar errores por no tener el phpmailer.lang-es.php? si es cierto donde instalamos el php de idioma ?
  • @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!
  • 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
  • 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.
  • 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...
blog comments powered by Disqus