Una de las mejores opciones que tenemos para enviar un mail desde PHP a parte de usando la funcion mail() es usando la clase PHPMailer en especial si necesitamos funcionalidades avanzadas como enviar un mail con ficheros adjuntos o configurar el envió mediante el servidor SMTP de Gmail por poner un ejemplo.
Para usar PHPMailer lo primero que debemos hacer es entrar en la web Sourceforge donde podremos descargar la versión PHPMailer for PHP5, una vez que lo descomprimamos rápidamente nos encontraremos con los ficheros necesarios e incluso algunos ejemplos que nos pueden ser de gran utilidad para realizar las llamadas que necesitemos para el envío correcto del email.
Como es lógico lo primero que tenemos que hacer en estos casos es llamar a la clase con require_once o include, en el ejemplo que os pongo a continuación os voy explicando paso a paso lo que se está realizando en cada momento.
require_once('class.phpmailer.php'); $mail = new PHPMailer(true); $mail->IsSMTP(); // Vamos usar SMTP si pusiéramos IsMail() lo mandaría a través de la función mail() try { $mail->SMTPAuth = true; // Habilitamos la autentificación por SMTP $mail->SMTPSecure = "ssl"; // Usar SMTP seguro $mail->Host = "smtp.gmail.com"; // Indicamos el servidor SMTP $mail->Port = 465; // Indicamos el puerto del servidor SMTP de Gmail $mail->Username = "usuario@gmail.com"; // GMAIL uusuario $mail->Password = "contraseña"; // GMAIL contraseña $mail->AddReplyTo('nombre@dominio.com', 'Nombre Apellido'); $mail->AddAddress('destinatario@dominio.com', 'Nombre Apellido'); $mail->SetFrom('nombre@dominio.com', 'Nombre Apellido'); $mail->Subject = 'Asunto del eMail que enviamos'; $mail->AltBody = 'Para leer este eMail necesita un cliente compatible'; // Mensaje opcional para los que no tengan clientes de eMail compatibles con HTML $mail->MsgHTML(file_get_contents('contenido.html')); // Solicitamos el contenido del fichero y ponemos como contenido HTML del eMail $mail->AddAttachment('images/phpmailer.gif'); // Fichero adjunto al correo $mail->Send(); // Enviamos el eMail echo "Mensaje enviado correctamente"; } catch (phpmailerException $e) { echo $e->errorMessage(); } catch (Exception $e) { echo $e->getMessage(); } |
Como podeis observar es un ejemplo en el que nos conectamos al servidor SMTP de Gmail, para ello necesitamos loguearnos con nuestra cuenta de usuario de Google y a través de las indicación de nos dan en este caso Google.
La mayoría de las opciones de PHPMailer vienen configuradas por defecto por lo que no tendrás ningún problema si no pones algunos campos y al contrario puedes usar muchas otras llamadas que no he puesto en el ejemplo.
En el propio fichero comprimido que descargas se encuentras varias guías de uso que estoy seguro que te serán de gran utilidad.
Cualquier duda o corrección que detectéis podéis dejar un comentario.
Perfecto, me ha funcionado a la primera y además ahora como estoy usando la cuenta de Gmail no me llega a span que era lo que pasaba antes con la función Mail de PHP.
Muchas gracias
Ami no me esta funcionando me aparece el mensaje:
Error SMTP: No puedo conectar al servidor SMTP.
alguna sugerencia u otra alternativa, aunque si pudiera usar el PhpMailer seria excelente.
Al parecer ni a mi me esta funcionando no me conecta al servidor no se que problema sera,
Este es mi codigo:
require(«class.phpmailer.php»);
// Instanciando el Objeto
$mail = new PHPMailer();
$mail->IsSMTP();
//Servidor SMPT – GMAIL usa SSL/TLS como protocolo de comunicación/autenticación.
$mail->Host = ‘ssl://smtp.gmail.com:587’;
// True para que verifique autentificación
$mail->SMTPAuth = true;
// Cuenta de E-Mail & Password
$mail->Username = «micuenta@gmail.com»;
$mail->Password = «*****»;
$mail->From = «micuenta@gmail.com»;
$mail->FromName = «Probando»;
$mail->Subject = «Probando»;
// Cuenta de E-Mail Destinatario
$mail->AddAddress(«cuenta@hotmail.com»,»Alex Fernando Torres»);
$mail->WordWrap = 50;
$body = «Hola, te escribo desde perú»;
$mail->Body = $body;
$mail->Send();
O derrepente necesito configurar algo en mi cuenta de «GMAIL » ??????
El puerto que debes usar es el 465 para usar smtp de Gmail
Y para adjuntar un archivo y enviarlo por PHPMailer???, ojalá puedan ayudar.
Puedes hacerlo añadiendo la siguiente línea: $mail->AddAttachment(«ruta/archivo.zip»);
Buenos dias. Esta clase no funciona para enviar emails desde un dominio en especifico?.. es decir, para el ejemplo que se ha planteado se necesita logearse en gmail, sin embargo yo necesito enviar correo desde un dominio que no es gmail; es posible que funcione para otro dominio?
Puedes configurar para usar cualquier servidor SMTP en el envío de los emails. Lo único que debes cambiar son los datos de Gmail por lo de su servidor.
Un saludo Sergio
Hola
Yo estoy usando esa libreria y me va bien …. excepto cuando trato de mandar un correo de mas de 6mb no lo hace … xq??