Enviar emails automáticamente es muy útil para ciertos desarrollos de sistemas o aplicaciones que lo requieren, como notificar accesos, nuevos suscriptores, nuevos comentarios, etc, para ello usaremos la librería PHPmailer.
En este articulo les mostrare como enviar correos con PHP y la librería PHPMailer al final de este articulo les dejare un paquete de descarga con la librería + el código para enviar mensajes via email.
Te puede interesar: Inventio Max – Sistema de Inventario y Ventas Multi-Sucursal Profesional
Librería PHP Mailer
La librería PHPMailer lo podemos obtener en el repositorio de Github https://github.com/PHPMailer/PHPMailer consta básicamente de 3 archivos : class.phpmailer.php, class.smtp.php, class.pop3.php, entre otros.
Con la librería nos podemos conectar a cualquier servidor de correos, con un usuario y password que son los datos de la cuenta de correos y enviar correos a uno o varios destinatarios.
La librería facilita muchas cosas como el envió masivo, adjuntar archivos, entre otras cosas.
Codigo para enviar correos
El código para mostrarlo aquí utilizare un gist de Github, por cierto siganme en Github https://github.com/evilnapsis/:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <?php | |
| include "class.phpmailer.php"; | |
| include "class.smtp.php"; | |
| $email_user = "TU_EMAIL"; | |
| $email_password = "TU_PASSWORD"; | |
| $the_subject = "Phpmailer prueba by Evilnapsis.com"; | |
| $address_to = "evilnapsis@gmail.com"; | |
| $from_name = "Evilnapsis"; | |
| $phpmailer = new PHPMailer(); | |
| // ———- datos de la cuenta de Gmail ——————————- | |
| $phpmailer->Username = $email_user; | |
| $phpmailer->Password = $email_password; | |
| //———————————————————————– | |
| // $phpmailer->SMTPDebug = 1; | |
| $phpmailer->SMTPSecure = 'ssl'; | |
| $phpmailer->Host = "smtp.gmail.com"; // GMail | |
| $phpmailer->Port = 465; | |
| $phpmailer->IsSMTP(); // use SMTP | |
| $phpmailer->SMTPAuth = true; | |
| $phpmailer->setFrom($phpmailer->Username,$from_name); | |
| $phpmailer->AddAddress($address_to); // recipients email | |
| $phpmailer->Subject = $the_subject; | |
| $phpmailer->Body .="<h1 style='color:#3498db;'>Hola Mundo!</h1>"; | |
| $phpmailer->Body .= "<p>Mensaje personalizado</p>"; | |
| $phpmailer->Body .= "<p>Fecha y Hora: ".date("d-m-Y h:i:s")."</p>"; | |
| $phpmailer->IsHTML(true); | |
| $phpmailer->Send(); | |
| ?> |
Como puedes ver el código es muy simple 😉 te explico a continuación las lineas mas importantes:
Para lograr un envío de correos exitoso y evitar que caigan en la carpeta de SPAM, es fundamental configurar correctamente cada parámetro del script. A continuación, desglosamos la lógica línea por línea:
1. Configuración de Archivos y Credenciales
Líneas 2 y 3: Cargamos los archivos esenciales de la librería:
class.phpmailer.php(núcleo) yclass.smtp.php(protocolo de envío).Líneas 5 y 6: Aquí se definen las credenciales de la cuenta de Gmail emisora. Estos valores se inyectan automáticamente en la autenticación de las líneas 13 y 14.
Líneas 7 a 9: Definimos los metadatos básicos: el asunto del correo, el email del destinatario y el nombre del remitente (persona o aplicación).
Nota de seguridad: Recuerda cambiar el correo de ejemplo por tu dirección real para las pruebas de envío.
2. Parámetros del Servidor SMTP
Línea 16 (Debug): La instrucción
SMTPDebuges vital para el desarrollo; si encuentras errores, descuenta esta línea para ver el log detallado del servidor.Líneas 17 a 21: Configuración técnica del protocolo SMTP (Host de Gmail, puerto seguro 587, etc.). Esto garantiza una conexión cifrada con los servidores de Google.
3. Gestión de Remitente y Destinatarios
Línea 23: Se asigna la identidad de quien envía. Por defecto usamos la misma cuenta de autenticación para evitar bloqueos.
Línea 24: Agregamos al destinatario. Puedes repetir esta línea tantas veces como necesites si deseas realizar un envío múltiple.
4. Cuerpo del Mensaje y Envío Final
Línea 26: Asignación formal del asunto al objeto del correo.
Líneas 27 a 29: Construcción del mensaje. Aquí es donde redactas el contenido que recibirá el usuario.
Línea 30: Activamos el soporte para HTML, lo que te permite usar etiquetas como
<b>,<a>o imágenes en el cuerpo del correo.Línea 32: Ejecución del método de envío.
Conexión a Gmail
Para este ejemplo utilizo el servidor de Gmail, ya que a mi parecer es uno de los servidores muy confiables, pero dependiendo de la cuenta que tengamos hay que hacer algunos ajustes, ya que por seguridad Google bloquea los accesos a las cuentas y envía un correo de notificación como este:

Entonces lo que debemos hacer es permitir el acceso a aplicaciones menos seguras.

Y listo, ahora podemos enviar correos desde nuestra mini aplicación para enviar correos.
Resultado
Si todo ha salido bien, se envía el correo y como en este caso me envie el correo a una cuenta mia, puedo ver el resultado:

Descarga
Ahora te dejo el paquete de descarga a continuación:
[sociallocker]Link de descarga: https://drive.google.com/open?id=0B4VwLG0Dpi3tcWJ1ay1taWhncVk
[/sociallocker]Conclusión
Como puedes ver enviar correos usando la librería PHPMailer y una cuenta de Gmail es relativamente fácil, ahora con te toca a ti darle una aplicación especial a este articulo.
Cuéntame en los comentarios que tal te pareció este articulo, te fue útil?? También te invito a que te suscribas a mi Blog y a mi canal de Youtube https://youtube.com/evilnapsis.
Mucha gracias.
Hice unos cambios y funcionó con esto.
$phpmailer->SMTPSecure = ‘tls’; //’ssl’;
$phpmailer->Host = “smtp.gmail.com”;
$phpmailer->Port = 587; //465;
El puerto no es correcto (o en mis integraciones ese no funciona), si a alguien le da problemas esa configuración usen esta:
$mail->Port = 587;
Un saludo.
Gracias por tu aporte! Saludos
Que tal, buenas tardes.
Acabo de hacer pruebas con esta información para un sitio web y funcionó muy bien. Gracias por el aporte.
Saludos!!!
Muy buen post, yo siempre he mandado correos masivos con PHPmailer y mi hosting de pago, pero a veces algunos correos se van directo a la carpeta de SPAM, así que trataré de usar los servidores de gmail a ver que tal me va.
Recordemos que smtp.gmail.com nos permite enviar hasta 2000 mensajes al día.
Dejo este link de soporte de google para ampliar la información.
https://support.google.com/a/answer/176600?hl=es
Saludos.
Edgar
gracias por tu comentario edgar! Saludos
gracias, salvaste mi semestre
Saludos!
Hola amigo!!! y si quisiera conectarlo al host, en vez de gmail. Eh visto varios codigos pero no permite enviar el correo
Yo igual he tenido problemas con otros servidores, con la configuracion de este articulo y con gmail no tendras problemas para enviar correos.