Principal FAQ Preguntas Técnicas ¿Cómo envío correos con PHP por SMTP? (PHPMailer)
¿Cómo envío correos con PHP por SMTP? (PHPMailer) PDF Imprimir E-mail

La gran mayoría de personas que programan en PHP, utilizan la función mail() para realizar envíos, ya sean simples o complejos. El problema está cuando intentan realizar envíos masivos con esta función. Esta es mucho más simple por su compatibilidad y facilidad de uso con MySQL, pero no esta preparada para grandes cantidades de envíos.
Por suerte, existen clases como PHPMailer, que nos permiten realizar estos mismos envíos por el puerto y smtp que queramos, creando una aplicación mucho más potente y con la posibilidad de tener un mejor control de los envíos al existir reportes de correo.
PHPMailer es una clase de PHP gratuita.

Algunas de las funciones que trae son:

  • Envíos a varios remitentes, con CC, CCO, etc.
  • Soporta 8bits, base64 y binarios
  • Autenticación por SMTP
  • Envíos con HTML
  • Envíos de emails con adjuntos
  • Inclusión de imágenes en el correo

Una vez que tenemos la clase en nuestro sitio, debemos iniciar la misma desde PHP, usando la función require y cargando la clase de PHP:

require("class.phpmailer.php");
$mail = new PHPMailer();

//Luego tenemos que iniciar la validación por SMTP:
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = ""; // SMTP a utilizar. Por ej. smtp.sudominio.com
$mail->Username = "; // Correo completo a utilizar
$mail->Password = ""; // Contraseña
$mail->Port = 25; // Puerto a utilizar

//Con estas pocas líneas iniciamos una conexión con el SMTP. Lo que ahora deberíamos hacer, es configurar el mensaje a enviar, el //From, etc.
$mail->From = " Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla "; // Desde donde enviamos (Para mostrar)
$mail->FromName = "Nombre";

//Estas dos líneas, cumplirían la función de encabezado (En mail() usado de esta forma: “From: Nombre < Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla >”) de //correo.
$mail->AddAddress("correo"); // Esta es la dirección a donde enviamos
$mail->IsHTML(true); // El correo se envía como HTML
$mail->Subject = “Titulo”; // Este es el titulo del email.
$body = “Hola mundo. Esta es la primer línea<br />”;
$body .= “Acá continuo el <strong>mensaje</strong>”;
$mail->Body = $body; // Mensaje a enviar
$exito = $mail->Send(); // Envía el correo.

//También podríamos agregar simples verificaciones para saber si se envió:
if($exito){
echo ‘El correo fue enviado correctamente.’;
}else{
echo ‘Hubo un inconveniente. Contacta a un administrador.’;
}

Adjuntos
Este script va a funcionar perfecto, pero está claro que no todos los clientes de correo o Webmails soportan HTML, por lo que podríamos querer mostrar un texto alternativo plano. Esto lo podemos hacer agregando la siguiente línea:

$mail->AltBody = "Hola mundo. Esta es la primer línea\n Acá continuo el mensaje”;

Como bien comente antes, PHPMailer tiene cantidades de funciones, entre ellas la posibilidad de enviar adjuntos. Los mismos se pueden agregar de la siguiente forma:

$mail->AddAttachment("imagenes/imagenadjunta.jpg", "nombre_a_mostrar.jpg");

El primer valor es el que se utiliza para elegir la ruta del archivo. El segundo, es para marcar el nombre del archivo a mostrar.
CC y BBC

También tenemos la posibilidad de agregar cuentas en copia oculta para cuando tenemos muchos remitentes con las siguientes líneas:

$mail->AddCC(" Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla ");
$mail->AddBCC(" Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla ");

Sistema completo
Para finalizar, dejo el sistema completo para que no haya confusiones:

<?php
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = ""; // SMTP a utilizar. Por ej. smtp.sudominio.com
$mail->Username = ""; // Correo completo a utilizar
$mail->Password = ""; // Contraseña
$mail->Port = 25; // Puerto a utilizar
$mail->From = " Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla "; // Desde donde enviamos (Para mostrar)
$mail->FromName = "Su Nombre";
$mail->AddAddress("correo"); // Esta es la dirección a donde enviamos
$mail->AddCC(" Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla "); // Copia
$mail->AddBCC(" Esta dirección electrónica esta protegida contra spam bots. Necesita activar JavaScript para visualizarla "); // Copia oculta
$mail->IsHTML(true); // El correo se envía como HTML
$mail->Subject = “Titulo”; // Este es el titulo del email.
$body = “Hola mundo. Esta es la primer línea<br />”;
$body .= “Acá continuo el <strong>mensaje</strong>”;
$mail->Body = $body; // Mensaje a enviar
$mail->AltBody = "Hola mundo. Esta es la primer línea\n Acá continuo el mensaje”; // Texto sin html
$mail->AddAttachment("imagenes/imagen.jpg", "imagen.jpg");
$exito = $mail->Send(); // Envía el correo.

if($exito){
echo ‘El correo fue enviado correctamente.’;
}else{
echo ‘Hubo un inconveniente. Contacta a un administrador.’;
}
?>

 

 
 

Portales Dinámicos

Actualice su página Web de una forma fácil sin la necesidad de un diseñador web, mantenga al día la información en forma permanente, desde cualquier lugar. Utilice su Sitio para potenciar sus contactos, fidelizar sus clientes y multiplicar sus ventas.
Consúltenos y lo asesoraremos en su próxima decisión. Ingrese aquí para contactarnos.

Ecommerce

Comercialice sus productos y servicios a través de la Web. Consolide un canal de ventas on-line y establézcase en este mercado de permanente crecimiento. Poseemos herramientas y experiencia para brindar soluciones de rápida implementación.
Consúltenos y lo asesoraremos en su próxima decisión. Ingrese aquí para contactarnos.