Enviar correo es una de las tareas más comunes para cualquier proyecto web, por ejemplo para un formulario de contacto o para enviar la confirmación de una compra. El problema es que en muchos casos el correo no llega al destinatario o se detecta como spam.
Antecedentes
PHP ofrece un método sencillo para el envío de correos mail()
, el problema es que este método utiliza el servidor de correo local, esto hace que en la mayoría de ocaciones los correos sean marcados como SPAM.
La manera correcta de enviar correos es mediante un servidor SMTP (Simple Mail Transfer Protocol) que implementa el protocolo correcto para el envío de emails. Puedes utilizar el servidor SMTP de tu servicio de Hosting, el servidor SMTP de Gmail u otro servicio especializado como Amazon SES.
PHPMailer
PHPMailer es un componente o librería PHP que permite enviar correos de forma sencilla y con muchas opciones de configuración. Empecemos agregando PHPMailer a nuestro proyecto utilizando Composer, para ello ejecutamos en línea de comandos:
composer require phpmailer/phpmailer
Esto descarga los archivos necesarios para el funcionamiento de PHPMailer y prepara el archivo autoload.php
para que incluya automáticamente todos los archivos necesarios. Entonces creamos nuestro archivo para el envío de emails:
Para utilizar este código debes colocar los datos de tu servidor SMTP, usuario y clave. Luego vienen los datos del correo: asunto, destinatario y cuerpo del mensaje. Ten en cuenta que el remitente debe ser el mismo usuario del SMTP.
Utilizar PHPMailer con Gmail
Es posible utilizar el servidor SMTP de tu cuenta Gmail, pero con una configuración adicional. Por motivos de seguridad no se puede acceder desde servidores externos, pero se puede habilitar esta opción en: Less secure app access
Una vez activada esta opción ya puedes utilizar tu usuario y clave de Gmail y como servidor SMTP la dirección: smtp.gmail.com
.
Consideraciones finales
Existe la posibilidad que los correos enviados con este método sea marcados como SPAM, esto puede ocurrir por las siguientes razones:
- La dirección del remitente no coincide con el usuario del SMTP.
- El servidor SMTP utilizado esta registrado en una lista negra de spammers.
- El subject esta vacío o contiene palabras consideradas como spam.
Evita estos errores no tendrás problemas con el envío de correos.
Comentarios