---
title: "Cómo enviar correos electrónicos desde PHP: Lo que necesitas saber"
description: "Enviar correos electrónicos desde PHP es una necesidad común para muchas aplicaciones web, ya sea para notificaciones, restablecimiento de contraseñas o confirmaciones de compra. Sin embargo, hacerlo..."
url: https://wpdirecto.com/como-enviar-correos-electronicos-desde-php-lo-que-necesitas-saber/
date: 2025-03-29
modified: 2025-03-10
author: "David Carrero Fernández-Baillo"
image: https://wpdirecto.com/wp-content/uploads/2018/05/enviar-email-suscripcion-wordpress.jpg
categories: ["Actualidad"]
tags: ["email", "php", "PHPmailer", "sendmail"]
type: post
lang: es
---

# Cómo enviar correos electrónicos desde PHP: Lo que necesitas saber

Enviar correos electrónicos desde PHP es una necesidad común para muchas aplicaciones web, ya sea para notificaciones, restablecimiento de contraseñas o confirmaciones de compra. Sin embargo, hacerlo correctamente implica más que simplemente usar la función `mail()` de PHP. Existen múltiples consideraciones, desde la entrega confiable hasta la seguridad y autenticación del correo.

En este artículo, exploramos las diferentes formas de enviar correos electrónicos en PHP, los desafíos asociados y las mejores prácticas para garantizar que tus correos lleguen a la bandeja de entrada y no a la carpeta de spam.

---

## **Opciones para enviar correos desde PHP**

Hay varias maneras de enviar correos electrónicos utilizando PHP:

1. **Usar la función `mail()`**
   - Es la opción más simple y no requiere bibliotecas externas.
   - Sin embargo, tiene limitaciones significativas en cuanto a autenticación y entrega confiable.
2. **Usar una biblioteca como PHPMailer o SwiftMailer**
   - Facilitan el envío de correos electrónicos con autenticación SMTP.
   - Permiten adjuntar archivos, utilizar HTML y configurar encabezados de seguridad.
3. **Utilizar servicios de correo transaccional**
   - Plataformas como **Mailgun, Amazon SES, Mandrill o SendGrid** ofrecen APIs confiables para el envío de correos electrónicos.
   - Garantizan mayor tasa de entrega y ofrecen herramientas de monitoreo.

---

## **Cómo enviar un correo con `mail()` en PHP**

Si decides usar la función incorporada de PHP, aquí tienes un ejemplo básico:

```
<?php
$to = "usuario@ejemplo.com";
$subject = "Prueba de correo";
$message = "Hola, este es un correo de prueba enviado desde PHP.";
$headers = "From: remitente@tu-dominio.com" . "\r\n" .
           "Reply-To: remitente@tu-dominio.com" . "\r\n" .
           "X-Mailer: PHP/" . phpversion();

mail($to, $subject, $message, $headers);
?>
```

### **Limitaciones de `mail()`**

- No admite autenticación SMTP.
- Puede ser bloqueado por servidores de correo debido a la falta de autenticación.
- No permite enviar archivos adjuntos ni mensajes en formato HTML con facilidad.
- La configuración de `sendmail` en el servidor puede afectar su funcionamiento.

---

## **Usar PHPMailer para un envío más seguro y confiable**

[PHPMailer](https://wpdirecto.com/error-smtp-wordpress/) es una de las bibliotecas más utilizadas para enviar correos desde PHP con soporte para SMTP y autenticación.

### **Instalar PHPMailer**

Si usas Composer, puedes instalar PHPMailer con:

```
composer require phpmailer/phpmailer
```

### **Ejemplo de envío de correo con PHPMailer**

```
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

$mail = new PHPMailer(true);

try {
    // Configuración del servidor SMTP
    $mail->isSMTP();
    $mail->Host = 'smtp.ejemplo.com';
    $mail->SMTPAuth = true;
    $mail->Username = 'usuario@ejemplo.com';
    $mail->Password = 'tu_contraseña';
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;
    $mail->Port = 587;

    // Configurar destinatarios
    $mail->setFrom('remitente@ejemplo.com', 'Tu Nombre');
    $mail->addAddress('usuario@ejemplo.com');

    // Contenido del correo
    $mail->isHTML(true);
    $mail->Subject = 'Correo de prueba con PHPMailer';
    $mail->Body    = '<b>Este es un mensaje de prueba enviado con PHPMailer.</b>';
    $mail->AltBody = 'Este es un mensaje de prueba enviado con PHPMailer.';

    // Enviar el correo
    $mail->send();
    echo 'Mensaje enviado correctamente';
} catch (Exception $e) {
    echo "Error al enviar el correo: {$mail->ErrorInfo}";
}
?>
```

### **Ventajas de PHPMailer**

✅ Soporte para autenticación SMTP.
✅ Permite adjuntar archivos y enviar correos en formato HTML.
✅ Reduce la posibilidad de que el correo sea marcado como spam.
✅ Compatible con servicios de correo populares como Gmail, Outlook y Mailgun.

---

## **Cómo garantizar la entrega de los correos**

Para evitar que tus correos terminen en la carpeta de spam, sigue estas prácticas recomendadas:

1. **Configura registros SPF, DKIM y DMARC**
   - **SPF (Sender Policy Framework)**: Define qué servidores pueden enviar correos en nombre de tu dominio.
   - **DKIM (DomainKeys Identified Mail)**: Firma digitalmente los correos para verificar su autenticidad.
   - **DMARC (Domain-based Message Authentication)**: Permite establecer reglas sobre cómo tratar correos sospechosos.
2. **Usa servidores SMTP con autenticación**
   - Enviar correos directamente desde `mail()` en PHP puede hacer que los mensajes sean rechazados por servidores como Gmail.
   - Servicios como Amazon SES, Mailgun o SendGrid ofrecen alta tasa de entrega.
3. **Evita palabras clave que activan filtros de spam**
   - Frases como «Oferta especial», «Haz clic aquí», «Gratis» pueden hacer que el correo sea marcado como spam.
4. **Configura un dominio personalizado para el correo saliente**
   - Utilizar un dominio genérico como `@gmail.com` o `@hotmail.com` puede reducir la tasa de entrega.
5. **Utiliza TLS o SSL para conexiones seguras**
   - Asegúrate de que tu servidor de correo admite conexiones seguras para proteger la información de los correos enviados.

---

## **Conclusión**

Aunque PHP permite enviar correos de forma nativa con la función `mail()`, en la mayoría de los casos es recomendable usar una biblioteca como **PHPMailer** o servicios de correo transaccional como **SendGrid, Acumbamail, Amazon SES o Mailgun**.

Implementar configuraciones adecuadas como **SPF, DKIM y DMARC**, junto con la autenticación SMTP, asegurará que tus correos sean entregados correctamente y no sean marcados como spam.
