Descripción general de PHP mail

Popular:
¡MEJORA LA CONFIGURACIÓN DE TU SERVIDOR! APLICAR AVA Y LANZA CON UN 15% DE DESCUENTO
USA EL CÓDIGO PROMOCIONAL:

La función mail() está integrada en PHP y se usa para enviar emails directamente desde un web server. Es una forma sencilla de enviar notificaciones, mensajes de formularios de contacto, confirmaciones de pedidos y otros tipos de mensajes.

Adecuada para la funcionalidad básica de email sin usar bibliotecas externas.

Cómo funciona mail()

Cuando llamas a la función mail(), PHP pasa el email al agente de transferencia de correo del sistema (MTA) instalado en el servidor (normalmente Sendmail o Postfix). Luego, el MTA procesa y entrega el mensaje a la dirección especificada.

 Sintaxis

mail(to, subject, message, headers, parameters);

 Parámetros

ParámetroDescripción
$toDirección de email del destinatario. Puedes especificar varias direcciones separadas por comas.
$subjectAsunto del email. No debe contener saltos de línea.
$messageCuerpo principal del mensaje.
$headersEncabezados adicionales como From, Reply-To, Cc, Bcc, etc.
$parametersParámetros extra, como especificar el remitente para Sendmail (-f).

Ejemplo simple

<?php $to = "user@example.com"; $subject = "Test Email"; $message = "Hello! This is a test email sent using PHP."; $headers = "From: webmaster@yourdomain.com"; mail($to, $subject, $message, $headers); ?>

 Notas importantes

1. Se requiere el encabezado From:

Si no especificas un encabezado From:, la mayoría de los servidores de correo rechazarán el mensaje como sospechoso o spam.

$headers = "From: noreply@yourdomain.com";

2. Formato de mensajes de varias líneas

Usa rn para separar las líneas en tu mensaje:

$message = "Hello,rnrnThank you for your order.rnrnBest regards,rnYour Team";

3. Múltiples encabezados

Usa rn para separar múltiples encabezados como Reply-To, Cc y Bcc:

$headers = "From: admin@yourdomain.comrn"; $headers .= "Reply-To: support@yourdomain.comrn"; $headers .= "Cc: someone@yourdomain.comrn";

Ejemplo: Enviar email HTML (solo texto)

La función mail() no admite archivos adjuntos de forma nativa. Pero puedes enviar emails HTML o establecer el tipo de contenido manualmente:

$headers = "MIME-Version: 1.0rn"; $headers .= "Content-type: text/html; charset=UTF-8rn"; $headers .= "From: info@yourdomain.com"; $message = "<h1>Hello!</h1><p>Your order has been received.</p>"; mail("user@example.com", "Order Confirmation", $message, $headers);

 Problemas comunes y soluciones

ProblemaCausa / Solución
Email no entregadoFalta el encabezado From: o la IP del servidor está en una lista negra
El email no se envía en absolutoNo hay un MTA instalado (por ejemplo, se requiere Sendmail/Postfix)
Error: mail() ha sido deshabilitadamail() está deshabilitada en php.ini (a menudo por política del host)
El texto ruso aparece como ????El charset no está configurado en UTF-8 en los encabezados
Los emails van a spamFrom incorrecto, sin SPF/DKIM o dominio mal configurado

 Conclusión

La función mail() es una herramienta básica pero potente para enviar emails directamente desde scripts PHP. Es:

  • Fácil de usar
  • No requiere bibliotecas adicionales
  • Adecuada para notificaciones internas, formularios de contacto y autoresponders

Sin embargo, ten en cuenta sus limitaciones:

  • Depende de la configuración de correo del servidor
  • No admite archivos adjuntos
  • Puede estar deshabilitada por defecto en algunos entornos de shared hosting

Si planeas enviar emails con regularidad, asegúrate de que tu servidor esté correctamente configurado para correo saliente (con Sendmail/Postfix instalados, registros SPF/DKIM configurados y mail() habilitada en php.ini).