Gratis
900 854 000
Gratis 24x7
Contáctanos
¿Te ayudamos?

¿Cómo puedo enviar correos con PHP?

Si necesitas enviar correos con PHP a través de tu web, te resultará útil leer esta entrada.

Antes de nada, es importante recordar que el envío a través de nuestros servidores debe realizarse siempre de forma segura: bien sea autenticada, bien sea con unas restricciones establecidas como medida de seguridad.

Antes de comenzar, vas a necesitar crear una cuenta de correo en tu hosting. Si se trata de envíos autenticados (la mayoría de casos), tendrás que utilizar el usuario y contraseña de la cuenta que elijas para realizar el envío, bien sea a través de un programa de correo como Outlook o Thunderbird, o a través de un script de tu página web.

Forma de envío

En general aplicaciones como WordPress, PrestaShop, etc. disponen ya de una opción propia para realizar envíos de correo con PHP, tanto autenticados como sin autenticar, indicando simplemente la cuenta remitente, la de destino y el contenido correspondiente al envío, adicionalmente existen plugins y módulos que amplían estas características como puede ser WP mail SMTP en WordPress.

El envío puede hacerse a través de cualquier script en PHP, o desde una aplicación instalada en la web. A su vez, contamos con dos formas diferenciadas de llevarlo a cabo:

  1. Envíos mediante la función mail()
  2. Envíos autenticados

Envíos de correo a través de la función PHP mail()

Es la opción más sencilla, usada por gran parte de los programadores. Es una función fácil de manejar y compatible con MySQL. No es recomendable para envíos masivos.

Ejemplo:

mail($destinatario, $titulo, $mensaje, $cabecera_remitente, “”, $usuario, $password);

Como en este caso el envío no se realiza de forma autenticada, es necesario seguir reglas específicas para que el servidor permita enviarlos:

  • La cuenta remitente debe existir dentro del hosting
  • El dominio remitente debe existir en el servidor

NOTA: es posible que el campo from no esté definido, pero sí lo esté el to. El envío funcionará siempre y cuando el to sea una cuenta de tu hosting.

Envíos de correo autenticados a través de PHPMailer

PHPMailer es una herramienta más potente que la función mail(), pues posibilita la personalización de opciones de envío como las siguientes:

  • Envíos a varios remitentes con CC
  • Inclusión de CCO (copia oculta)
  • Autenticación por SMTP
  • Envíos con HTML
  • Envíos con ficheros adjuntos

Se trata de una clase gratuita que podemos descargar, por ejemplo, a través de esta URL.

Una vez descargada la librería basta con incluirla en nuestro proyecto. Para poder hacer uso de esta clase tienes que utilizar la función require y crear un objeto de la clase PHPMailer.

NOTA: solo se permiten conexiones al puerto 25 de salida en localhost.

Al hacer uso de clases como PHPMailer pueden aparecer incidencias si se realizan conexiones a SMTPS externos o si se intenta conectar al servidor de correo de su dominio a través de mail.example.com

Si tienes este problema, solo tienes que modificar la configuración de la siguiente forma, realizando la conexión a través de localhost:

En lugar de:

$mail->Host = ” mail.example.com”;

Cambiar a:

$mail->Host = “localhost”;

IMPORTANTE: por razones de seguridad, no permitimos envíos sin autenticar que provengan del exterior, únicamente se pueden enviar correos desde la propia web.

PHPMailer utilizando Gmail

Es posible utilizar PHPmailer usando los servicios gratuitos de correo que ofrece gmail, sin embargo, debemos tener en cuenta antes de emplear esta opción, que gmail limita a 100 los envíos diarios vía SMTP tal como indican en su documentación.

Necesitarás adicionalmente permitir el acceso a aplicaciones menos seguras en las opciones de la cuenta de Gmail, puedes acceder directamente a la opción con este enlace.

Habilitar acceso de aplicaciones poco seguras gmail
Habilitar acceso de aplicaciones poco seguras gmail

En los ficheros descargados de PHPmailer que indicabamos anteriormente, podremos localizar dentro del directorio examples un fichero llamado gmail.phps

Este fichero viene preconfigurado para empezar a usar PHPMailer con una cuenta de gmail, simplemente tendremos que editarlo para cambiar los datos de nombre de usuario, contraseña y dirección de correo del destinatario. Una vez cambiado, podemos renombrarlo para que sea accesible por nuestro hosting, pasando de gmail.phps a gmail.php.

Ahora cuando hagamos una llamada vía navegador a este fichero y si los datos que has introducido son correctos, verás un mensaje indicando el resultado del envío.