| Subcribe via RSS

Introducción a PHPMailer

Diciembre 3rd, 2006 Posted in herramientas-para-tu-web, php

Dado que muchos lo estáis pidiendo me he animado a escribir una pequeña introducción a PHPMailer. Lo primero es descargarnos el archivo con la última versión y descomprimirlo en el directorio de nuestro proyecto, por ejemplo en el directorio phpmailer. Para poder usar PHPMailer basta añadir:

include("phpmailer/class.phpmailer.php");

con la ruta adecuada a PHPMailer.

En este ejemplo, modificación del que aparece en la “web oficial”, se puede ver lo fácil que es usar PHPMailer:

SetLanguage('es','phpmailer/language/'))
{
	echo '

No se ha podido cargar el fichero de idioma adecuado.

';
}

// Introducimos la información del remitente del mensaje
$mail->From     = "remitente@email.com";
$mail->FromName = "Remitente";
$mail->AddReplyTo("info@site.com","Information");
// y los destinatarios del mensaje. Podemos especificar más de un destinatario
$mail->AddAddress("paco@correo.com","Paco Martínez Soria");
$mail->AddAddress("klaatu@correo.com");  // Como se puede ver aquí el nombre del destinatario es opcional
$mail->AddCC("otrodestinatario@correo.com"); // También podemos enviar con copia de carbón
$mail->AddBCC("destiantaariooculto@correo.com"); // y copia de carbón oculta

// Establecemos los parámetros del mensaje: ancho y formato.
$mail->WordWrap = 50; // ancho del mensaje
$mail->IsHTML(true); // enviar como HTML

// Añadimos el mensaje: asunto, cuerpo del mensaje en HTML y en formato
// solo texto
$mail->Subject  =  "Asunto del mensaje";
$mail->Body     =  "Este es el mensaje en formato HTML";
$mail->AltBody  =  "Y este es el mensaje de solo texto"; // Para los queno pueden recibir en formato HTML

// Añadimos los adjuntos al mensaje
$mail->AddAttachment("/var/tmp/file.tar.gz"); // podemos añadir un adjunto directamente
$mail->AddAttachment("/tmp/image.jpg", "new.jpg"); // O podemos indicar un nuevo nombre para el adjunto.

if(!$mail->Send())
{
   echo "El mensaje no se ha podido enviar

";
   echo "Error: " . $mail->ErrorInfo;
   exit;
}
echo "El mensaje se ha enviado correctamente";
?>

Este ejemplo no funcionaría si el servidor que usarmos es SMTP. En ese caso tendríamos que añadir estas líneas al principio:


$mail->IsSMTP();                                   // enviar vía SMTP
$mail->Host     = "smtp1.site.com;smtp2.site.com"; // Servidores SMTP
$mail->SMTPAuth = true;     // activar la identificacín SMTP
$mail->Username = "jswan";  // usuario SMTP
$mail->Password = "secret"; // clave SMTP

Otras funciones interesantes:

- ClearAddresses () – Borra todos los destinatarios del campo ‘TO’, es decir, todos los destinatarios que se han añadido con la función AddAddress.

- ClearAllRecipients () – Borra todos los destinatarios TO, CC y BCC.

- ClearAttachments () – Borra los adjuntos.

Existe información más completa, en inglés, con todas las funciones disponibles en:

http://phpmailer.sourceforge.net/docs/



Entradas relacionadas

  1. La clase PHPMailer
  2. ZenCart 1.3.0.1
  3. Introducción a Prototype – un toolkit Ajax
  4. bbPress 0.74
  5. Introducción a bash: Pasar argumentos a un script bash
Valoración:
1 Estrella2 Estrellas3 Estrellas4 Estrellas5 Estrellas (Sin calificar)
Loading ... Loading ...




7 Responses to “Introducción a PHPMailer”

  1. escoffie Says:

    ¿Es posible que usando SMTP utilice una cuenta para mandar el correo pero que el remitente (From) sea distinto al de la cuenta usada?
    Me explico:
    Dado el código:
    $mail->IsSMTP(); // enviar vía SMTP
    $mail->Host = “smtp1.site.com;smtp2.site.com”; // Servidores SMTP
    $mail->SMTPAuth = true; // activar la identificacín SMTP
    $mail->Username = “jswan”; // usuario SMTP
    $mail->Password = “secret”; // clave SMTP

    … poder usar $mail->From = otrousuario@otrosite.com;

    Es decir, que el correo no llegue de parte de jswan @ site . com sino de otrousuario@otrositio.com

    Si fuera posible ¿es con el método From? Porque lo he probado sin éxito.

    Espero haberme explicado.

    Más información:
    - Usando un servidor compartido Ubuntu Linux
    - No tengo idea de cómo funciona un servidor de correos
    - Lo que quiero que pase es usar una cuenta de mi dominio para la validación por SMTP, pero usar otra cuenta para que aparezca como remitente.

    Gracias!


  2. gorkau Says:

    Pues creo que sí que es posible. Si no me equivoco yo lo he hecho alguna vez. ¿Cómo sabes que no funciona? ¿porque no llega el mensaje? No estoy seguro pero si no se envía podría deberse a la configuración del servidor (no permite enviar con remitentes de otro dominio) o podría deberse a que el mensaje es identificado como spam.

    ¿Funciona bien si envías los emails con un “from” que sea del mismo dominio?


  3. matias Says:

    Hola, necesito tener un formulario de contacto en mi sitio web con 4 o 5 campos pero no tengo servidor de correo y no he entendido mucho esto del phpmailer aunque parece servir bastante, me pueden echar una manito, muchas gracias.


  4. Alberto Says:

    Hola,
    a mí no me funciona cuando paso una dirección de otro dominio, ejemplo:

    $mail->IsSMTP();
    $mail->Host = “mail.midominio.com”;
    $mail->AddAddress(”correo@midominio.com”);
    $mail->AddAddress(”correo2@midominio.com”);
    $mail->AddAddress(”correo@otrodominio.com”);

    no requiere autentificación, ni siquiera me envía los correos a las direcciones de mi dominio, simplemente comentando la línea del correo del otro dominio funciona perfectamente.

    Imagino que será cosa del servidor, les llamaré a ver si me dan una solución y os lo comento…pero me lleva bastante loco que por poner otro dominio deje de funcionar.

    Si alguien sabe algo sobre el tema le agradecería toda la ayuda.

    Gracias, un saludo.


  5. orlando Says:

    Hola. He estado intentando enviar correos con phpmailer y la verdd es que por mas intentos que hago no logro que me salga bien. por favor sí me pueden ayudar se los agradeceria mucho


  6. Bernabe Says:

    A mi me tira el siguiente error
    Fatal error: Maximum execution time of 30 seconds exceeded in C:\AppServ\www\Dreamweaver\servidor\phpmailer\class.smtp.php on line 1024

    Pa mi que tengo todo bien…¿Porque sera?.. :) …..Gracias


  7. Alex Says:

    me parece que te faltó instanciar la clase,
    $mail=new PHPMailer();


Leave a Reply