This website uses cookies

Our website, platform and/or any sub domains use cookies to understand how you use our services, and to improve both your experience and our marketing relevance.

Cómo enviar correos electrónicos en PHP con PHPMailer (Guía para principiantes)

Updated on julio 10, 2025

11 Min Read

El envío de correos electrónicos es una función común en la mayoría de las aplicaciones PHP, ya sea para el registro de usuarios, la actualización de pedidos o los formularios de contacto. Aunque la función integrada mail() de PHP ofrece una forma sencilla de enviar correos electrónicos, tiene un soporte limitado para el formato HTML, los archivos adjuntos y una entrega SMTP fiable.

PHPMailer proporciona una alternativa más flexible y robusta. En esta guía, aprenderás a instalar y configurar PHPMailer, conectarlo con el SMTP de Gmail y enviar correos electrónicos bien formateados con archivos adjuntos utilizando sólo unas pocas líneas de código.

Empecemos…

¿Por qué utilizar PHPMailer en lugar de la función mail() de PHP?

PHPMailer es una biblioteca PHP que proporciona una forma sencilla de enviar correos electrónicos en PHP. Ofrece una serie de características que la convierten en una alternativa popular a la función mail() incorporada en PHP, como soporte para correos HTML, archivos adjuntos y autenticación SMTP.

PHPMailer es fácil de configurar y utilizar y proporciona un alto nivel de personalización y flexibilidad, lo que lo convierte en una opción popular para los desarrolladores que necesitan enviar correos electrónicos desde sus aplicaciones PHP. También se mantiene y actualiza activamente, por lo que es una opción de correo electrónico fiable y segura.

Aquí tienes una rápida comparación entre PHPMailer y PHP mail:

Función PHPMailer correo()
Funcionalidad Una biblioteca de correo electrónico con todas las funciones que permite enviar correos electrónicos con o sin SMTP Una función sencilla que permite enviar correos electrónicos mediante la función PHP mail()
Complejidad Más complejo, pero ofrece más funciones y opciones Más sencillo, con opciones limitadas
Soporte SMTP Admite el envío de correo electrónico a través de SMTP, incluyendo autenticación y encriptación No admite el envío de correo electrónico a través de SMTP
Archivos adjuntos Admite el envío de archivos adjuntos No admite el envío de archivos adjuntos
Tratamiento de errores Proporciona mensajes de error detallados e información de depuración Proporciona información mínima sobre errores
Seguridad Admite encriptación y autenticación al enviar correo electrónico por SMTP No admite encriptación ni autenticación

También te puede gustar: Cómo añadir certificados SSL a sitios PHP personalizados

Ventajas de usar PHPMailer

Utilizar PHPMailer tiene varias ventajas sobre la función nativa mail() a la hora de enviar correos electrónicos en PHP:

1. Código más limpio y gestión automática de encabezados

Cuando se utiliza la función mail(), los desarrolladores a menudo tienen que crear manualmente cabeceras complejas -como tipos MIME, límites de contenido y codificación de caracteres- que pueden desordenar el código e introducir errores de formato. PHPMailer se encarga de todo esto entre bastidores, permitiéndote centrarte en el contenido del correo electrónico en lugar de luchar con la sintaxis.

2. Soporte SMTP sin dependencia del servidor

La función mail() depende del agente de transferencia de correo integrado en el servidor (como Sendmail), que no siempre está configurado o es fiable. PHPMailer es compatible con SMTP desde el primer momento y te permite configurarlo todo -host, puerto, método de encriptación, credenciales- directamente dentro de tu script PHP. No necesitas hacer cambios en todo el servidor.

3. Mensajes de error multilingües

PHPMailer proporciona mensajes de error en más de 40 idiomas, lo que lo hace muy adecuado para aplicaciones con usuarios internacionales. Puedes establecer fácilmente el idioma para la gestión de errores, ofreciendo una experiencia más localizada y fácil de usar.

4. Cifrado SSL/TLS para una entrega segura

La seguridad es fundamental a la hora de enviar correos electrónicos. PHPMailer admite cifrado SSL y TLS para las conexiones SMTP, lo que ayuda a proteger tus mensajes de la interceptación durante la transmisión.

5. Correos electrónicos HTML y alternativas de texto sin formato

Aunque técnicamente la función mail() puede enviar correos electrónicos HTML o adjuntos, hacerlo requiere elaborar manualmente mensajes MIME multiparte. PHPMailer lo hace sin esfuerzo: puede enviar tanto una versión HTML como una versión de texto sin formato con una configuración mínima, lo que garantiza una mejor compatibilidad entre dispositivos y clientes de correo electrónico.

Envío de correos electrónicos en PHP con PHPMailer

Ahora te mostraré exactamente cómo configurar y utilizar la biblioteca PHPMailer. Cubriremos todo, desde los primeros pasos hasta el envío de correos electrónicos con archivos adjuntos a través de un servicio fiable como el SMTP de Gmail.

Requisitos previos

Antes de meternos de lleno, pongamos algunas cosas en su sitio. Necesitarás

  1. Un Servidor Local como XAMPP o MAMP instalado. Esto permite que PHP se ejecute en tu máquina.
  2. PHP 7.4 o superior (PHPMailer funciona con 5.5+, pero las versiones más recientes son más seguras y fiables).
  3. Composer instalado (sirve para gestionar las librerías PHP): Obtener Composer
  4. Un editor de texto como VS Code o Sublime.
  5. (Opcional pero recomendado) Una cuenta de Gmail para probar el envío de correo SMTP .

Paso 1: Instalar PHPMailer mediante Composer

Muy bien, vamos a introducir PHPMailer en tu proyecto.

Abre tu terminal (Símbolo del sistema, PowerShell o aplicación Terminal), ve a la carpeta de tu proyecto. Por ejemplo, si quieres una carpeta llamada email-tutorial en tu escritorio, harías algo como

cd Desktop

mkdir email-tutorial

cd email-tutorial

Escritorio CD

¡Estupendo! Has creado correctamente la carpeta de tu espacio de trabajo y ahora estás listo para empezar a instalar PHPMailer dentro de ella.

Tutorial por correo electrónico

Ahora, para instalar PHPMailer, una vez que estés dentro de la carpeta de tu proyecto, escribe (o copia y pega) este comando y pulsa Intro:

composer require phpmailer/phpmailer

Esto descarga PHPMailer y lo configura para ti. Verás una nueva carpeta llamada vendor/ en tu proyecto – ahí es donde Composer guarda tus librerías.

Código

Vendedor

Paso 2: Configurar tus archivos (organizar tu espacio de trabajo)

Ahora que PHPMailer está en tu proyecto, vamos a organizar nuestros archivos. Tu carpeta de proyecto de correo electrónico debería tener ahora este aspecto:

Estructura de la carpeta del proyecto:

  • proyecto-email (carpeta principal)
  • index.php – Crearemos este archivo para nuestro código de correo electrónico
  • vendor – Contiene PHPMailer (creado automáticamente por Composer)
  • composer.json – Archivo de configuración (creado automáticamente por Composer)

Sigue adelante y crea un nuevo archivo llamado index.php dentro de tu carpeta email-project. Aquí es donde escribiremos todo nuestro código PHP para enviar correos electrónicos.

index.php

Paso 3: Enviar un correo electrónico básico (sin SMTP todavía)

Empecemos con una prueba sencilla. Enviaremos un correo electrónico sin utilizar un servidor de correo especial (SMTP). Esto es sólo para ver si PHPMailer funciona correctamente dentro de tu proyecto.

Abre tu archivo index.php en tu editor de texto y pega este código:

<?php

use PHPMailer\PHPMailer\PHPMailer;

use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

$mail = new PHPMailer(true); // true enables exceptions

try {

// Email headers and body

$mail->setFrom('[email protected]', 'Your Name');

$mail->addAddress('[email protected]', 'Receiver Name');

$mail->addReplyTo('[email protected]', 'Reply Name');

$mail->isHTML(true);

$mail->Subject = 'Test Email using PHPMailer';

$mail->Body = '<b>This is a test email sent from localhost using PHPMailer!</b>';

$mail->AltBody = 'This is a plain text version for non-HTML clients.';

$mail->send();

echo '✅ Email has been sent successfully!';

} catch (Exception $e) {

echo \"❌ Email could not be sent. Error: {$mail->ErrorInfo}\";

}

Guarda tu archivo index.php.

Paso 4: Ejecutar el Servidor Web Integrado de PHP

En CMD (dentro de la carpeta de tu proyecto), inicia el servidor web de PHP:

php -S localhost:8000

Ya lo verás:

PHP 8.x.x Development Server (http://localhost:8000) started

Obtener índice

Paso 5: Abre el navegador y prueba

Ir a: http://localhost:8000/index.php

Lo que debería ocurrir

Si todo está bien conectado, o verás:

  • ✅ «¡El correo electrónico se ha enviado correctamente!» (si funciona el transporte de correo electrónico)
  • ❌ O bien: No se ha podido enviar el correo electrónico. Error: … (probablemente si el SMTP aún no está configurado)

En mi caso, veo esto:

Función de correo

¿Por qué?

Por defecto, esta configuración no utiliza SMTP – y mi configuración local de PHP probablemente no tenga configurado un servidor de correo. Eso es normal. Por eso la mayoría de los desarrolladores utilizan SMTP para enviar correos electrónicos reales.

Ahora abordaremos este problema añadiendo SMTP a continuación. Pero por ahora, esto confirma que tu servidor local funciona, PHP se está ejecutando y PHPMailer está cargado.

Enviar correo electrónico utilizando SMTP (Ejemplo de Gmail)

SMTP (Protocolo Simple de Transferencia de Correo) es la forma estándar de enviar correos electrónicos a través de Internet. Piensa en un servidor SMTP como la oficina de correos real que recoge tu carta y la entrega en el buzón del destinatario.

Utilizar uno garantiza que tus correos electrónicos lleguen a donde tienen que llegar.

Utilizaremos el servidor SMTP de Gmail porque está ampliamente disponible y es una opción fiable para enviar correos electrónicos.

Abre de nuevo tu archivo index.php , borra el código anterior y pega este nuevo código:

<?php

use PHPMailer\PHPMailer\PHPMailer;

use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try {

// Server settings

$mail->isSMTP();

$mail->Host = 'smtp.gmail.com';

$mail->SMTPAuth = true;

// 1. Your Gmail Address

$mail->Username = '[email protected]';

// 2. Your App Password

$mail->Password = 'your_app_password';

$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;

$mail->Port = 587;

// 4. Name Labels (Optional)

$mail->setFrom('[email protected]', 'Your Name');

$mail->addReplyTo('[email protected]', 'Your Name');

// 3. Recipient Email Address

$mail->addAddress('[email protected]', 'Friend Name');

// 5. Email Content

$mail->isHTML(true);

$mail->Subject = 'Hello from Gmail SMTP!';

$mail->Body = 'This message was sent using Gmail SMTP and PHPMailer!';

$mail->AltBody = 'Gmail SMTP version of the message.';

$mail->send();

echo '✅ Message sent using SMTP!';

} catch (Exception $e) {

echo "❌ Failed to send email. Error: {$mail->ErrorInfo}";

}

Importante: Configuración de la contraseña de la aplicación para Gmail

Si tienes activada la verificación en dos pasos (2FA) en tu Gmail (y deberías tenerla), no puedes utilizar tu contraseña habitual de Gmail. Tienes que utilizar una contraseña de aplicación.

He aquí cómo conseguirlo:

  1. Visita: https://myaccount.google.com/apppasswords.
  2. Inicia sesión y verifícate.
  3. En la casilla Nombre de la aplicación, escribe algo como PHPMailer (o cualquier cosa significativa para ti, como «Mi formulario de contacto PHP»).
  4. Haz clic en Crear.
  5. Google te dará una contraseña de 16 caracteres.

Contraseña de la aplicación

  1. Guárdalo en algún sitio. Lo necesitaremos cuando modifiquemos nuestro archivo index.php.

Personaliza estos campos antes de utilizar el código

Para enviar correctamente un correo electrónico utilizando SMTP de Gmail y PHPMailer, asegúrate de actualizar los siguientes campos:

1. Tu dirección de Gmail

Sustituye todas las instancias de [email protected] por tu dirección real de Gmail (la misma que utilizaste para generar la contraseña de la aplicación).

Encontrarás esto en:

$mail->Username = '[email protected]';

$mail->setFrom('[email protected]', 'Your Name');

$mail->addReplyTo('[email protected]', 'Your Name');

2. La contraseña de tu aplicación

Ahora, la App Password que guardamos antes, sustituye ‘your_app_password’ por la contraseña que obtuviste:

$mail->Contraseña = ‘tu_contraseña_app’;

No utilices aquí tu contraseña real de acceso a Gmail:utiliza sólo la contraseña de 16 caracteres de la aplicación proporcionada por Google.

3. Dirección de correo electrónico del destinatario

Cambia [email protected] por la dirección de correo electrónico a la que quieras enviar el mensaje:

$mail->addAddress([email protected], ‘Friend Name’);

Si es necesario, puedes añadir más destinatarios duplicando esta línea con direcciones diferentes.

4. Etiquetas con nombre (Opcional)

Actualiza las etiquetas «Tu nombre» y «Nombre de amigo» con los nombres de remitente/destinatario que quieras mostrar en el cliente de correo electrónico.

5. Contenido del correo electrónico

Siéntete libre de cambiar el asunto y el cuerpo del texto para que coincidan con tu propio mensaje:

$mail->Subject = 'Hello from Gmail SMTP!';

$mail->Body = 'This message was sent using Gmail SMTP and PHPMailer!';

$mail->AltBody = 'Gmail SMTP version of the message.';

Una vez actualizados todos estos campos con tus datos reales, guarda el archivo.

Pruébalo todo

Ahora vamos a probarlo todo.

Abre CMD y navega hasta la carpeta de tu proyecto:

cd path\to\your\email-tutorial

A continuación, ejecuta el script:

php index.php

Código SMTP

¡Éxito! Puedes confirmar que todo ha funcionado comprobando las bandejas de entrada del remitente y del destinatario para ver si el correo electrónico se ha entregado a través del SMTP de Google.

Bandeja de entrada del remitente:

Hola desde gmail.

Bandeja de entrada del receptor:

Hola desde gmail aviso

Enviar adjuntos de correo electrónico utilizando SMTP de Gmail y PHPMailer

Una vez que tengas funcionando tu script básico de correo electrónico, el envío de archivos adjuntos está a sólo una línea más de distancia, pero vamos a repasar la configuración completa para asegurarnos de que es hermética.

1. Elige tu archivo

Coloca el archivo que quieras adjuntar en la carpeta de tu proyecto para simplificar las rutas.

Por ejemplo, si quieres adjuntar un PDF llamado ejemplo.pdf, colócalo aquí:

C:\Usuarios\abdulrehman\Escritorio\correo-tutorial\muestra.pdf

Nota: El nombre de tu archivo puede ser cualquiera… no tiene por qué ser sample.pdf. He adjuntado una guía en PDF que escribimos, como puedes ver en la captura de pantalla de abajo.

Evitar el pedido spam

2. Actualiza tu código

En tu archivo index.php , desplázate hacia abajo hasta donde se configura el objeto $mail. Justo después de haber añadido el destinatario, pero antes de enviar el correo electrónico, incluye esta línea:

$mail->addAttachment('sample.pdf');

Esto adjuntará el archivo llamado muestra.pdf situado en la misma carpeta que tu script.

3. Verifica la ruta del archivo (¡Importante!)

Asegúrate:

  • El archivo no está abierto en ningún programa.
  • El nombre coincide exactamente (distingue mayúsculas de minúsculas).
  • Si está en una subcarpeta, incluye la ruta:
$mail->addAttachment('docs/report2024.pdf');

4. Ejecuta de nuevo tu script

Utiliza CMD para navegar hasta la carpeta del proyecto:

cd C:\Users\abdulrehman\Desktop\email-tutorial

La carrera:

php index.php

Si todo es correcto, ya lo verás:

✅ ¡Mensaje enviado mediante SMTP!

5. Comprueba tu correo electrónico

Abre la bandeja de entrada del destinatario y comprueba si ha recibido el archivo adjunto. Como puedes ver en la captura de pantalla siguiente, nuestro destinatario ha recibido el archivo PDF que adjuntamos en nuestro script.

Adjunto

Potencia tus proyectos PHPMailer con alojamiento PHP rápido

Da vida a tus funciones de correo electrónico PHP con un alojamiento PHP ultrarrápido. Lanza tus aplicaciones sin problemas con servidores fiables hechos para desarrolladores.

Reflexiones finales

A estas alturas, ya habrás visto cómo PHPMailer puede simplificar el envío de correos electrónicos en PHP. Desde configurar un script básico hasta configurar el SMTP de Gmail e incluso enviar archivos adjuntos, tienes una base sólida para incorporar funciones de correo electrónico fiables a tus proyectos.

En lugar de luchar con la función mail() nativa de PHP o lidiar con las limitaciones del lado del servidor, PHPMailer te ofrece una forma más limpia, segura y flexible de gestionar los correos electrónicos, sin complejidad adicional.

A medida que tus aplicaciones crecen, ejecutarlas en una plataforma de alojamiento que admita configuraciones SMTP y bibliotecas PHP como PHPMailer puede ahorrarte horas de resolución de problemas.

Con Cloudways PHPobtienes entornos PHP preconfigurados, soporte SMTP integrado a través de servicios como SendGrid o Mailgun, y una pila de rendimiento optimizada para una ejecución rápida. Esto significa menos tiempo para configurar el servidor y más tiempo para escribir código limpio y eficiente.

Preguntas frecuentes

Q. ¿Qué hace PHPMailer?

PHPMailer es una popular biblioteca PHP que te permite enviar correos electrónicos directamente desde tus aplicaciones. Soporta HTML, adjuntos, autenticación SMTP, y hace que el manejo del correo electrónico sea más fácil que utilizando la función mail() incorporada en PHP.

Q. ¿Es seguro PHPMailer?

Sí, PHPMailer admite la transmisión segura de correo electrónico mediante encriptación TLS y SSL. Cuando se configura correctamente, proporciona una forma fiable de enviar información sensible por correo electrónico utilizando servidores SMTP autenticados.

Q. ¿Cómo configuro Outlook SMTP con PHPMailer?

Para enviar correos electrónicos utilizando Outlook con PHPMailer, configura estos ajustes SMTP:

$mail->isSMTP();

$mail->Host = 'smtp.office365.com';

$mail->SMTPAuth = true;

$mail->Username = '[email protected]';

$mail->Password = 'your-password';

$mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;

$mail->Port = 587;

Esta configuración te permite enviar correos electrónicos de forma segura a través del servidor SMTP de Outlook.

Q. ¿Utiliza PHPMailer Sendmail?

PHPMailer puede utilizar Sendmail, pero es más habitual utilizarlo con SMTP para un mejor control, seguridad y compatibilidad. Sendmail es compatible como alternativa o en configuraciones más sencillas.

Q. ¿Para qué sirve PHPMailer?

PHPMailer gestiona el envío de correo electrónico en aplicaciones PHP. Admite correos de texto plano y HTML, archivos adjuntos y autenticación SMTP, lo que lo convierte en una alternativa más capaz y fácil de usar que la función nativa mail().

Q. ¿Cuál es el mejor método para enviar correos electrónicos utilizando PHP?

Para un uso básico, la función mail() de PHP funciona. Pero para un envío de correo electrónico seguro, flexible y rico en funciones, PHPMailer es la mejor opción. Admite SMTP, contenido HTML, archivos adjuntos y un mejor tratamiento de errores.

Share your opinion in the comment section. COMMENT NOW

Share This Article

Start Growing with Cloudways Today.

Our Clients Love us because we never compromise on these

Abdul Rehman

Abdul es un experto en tecnología, aficionado al café y al marketing creativo al que le encanta estar al día de las últimas actualizaciones de software y aparatos tecnológicos. También es un hábil escritor técnico capaz de explicar conceptos complejos de forma sencilla para un público amplio. Abdul disfruta compartiendo sus conocimientos sobre el sector de la Nube a través de manuales de usuario, documentación y entradas de blog.

×

Webinar: How to Get 100% Scores on Core Web Vitals

Join Joe Williams & Aleksandar Savkovic on 29th of March, 2021.

Do you like what you read?

Get the Latest Updates

Share Your Feedback

Please insert Content

Thank you for your feedback!

Do you like what you read?

Get the Latest Updates

Share Your Feedback

Please insert Content

Thank you for your feedback!

Want to Experience the Cloudways Platform in Its Full Glory?

Take a FREE guided tour of Cloudways and see for yourself how easily you can manage your server & apps on the leading cloud-hosting platform.

Iniciar mi recorrido