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.
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 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:
- Lineas 2 y 3: Incluir los archivos de la librería class.phpmailer.php y class.smtp.php
- Lineas 5 y 6: debes agregar los datos de acceso para la cuenta de Gmail de la que se enviaran los correos, los datos se usan en la linea 13 y 14.
- Linea 7: El asunto del correo se usa hasta la linea 26
- Linea 8: El correo del destinatario se usa hasta la linea 24, en este caso puse mi correo pero cuando hagan sus pruebas por favor cambien este valor
- Linea 9: El nombre de la persona o aplicación que envía el correo
- Linea 16: El smtpdebug sirve para saber el status del correo, en caso de dar algún error se muestra el error, esta linea esta comentada pero de ser necesario se puede descomentar
- Linea 17-21: Se configura el envió vía SMTP, host, puerto, etc.
- Linea 23: Se asignan los valores de quien envía el correo, en esta linea asigne los mismos valores de la cuenta que envía el correo, pero se pueden cambiar los datos.
- Linea 24: Se agrega el destinatario, esta linea se puede repetir varia veces en caso de que se requiera agregar varios destinatarios del mismo correo.
- Linea 26: Se asigna el asunto del correo
- Linea 27-29: Se crea y asigna el cuerpo del mensaje
- Linea 30: Ponemos que el correo tiene contenido HTML
- Linea 32: Enviamos el correo
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.