Saltar al contenido

Función dns_get_mx() de PHP: Todo lo que necesitas saber

Como desarrollador de PHP, es posible que necesites obtener los registros de intercambio de correo (MX) para un nombre de dominio. La función dns_get_mx() se utilizaba históricamente para este propósito, pero fue eliminada en PHP 8.2. El enfoque moderno utiliza dns_get_record() con la bandera DNS_MX. En este artículo, cubriremos la función heredada, su desuso y cómo usar la alternativa recomendada.

¿Qué es la función dns_get_mx()?

La función dns_get_mx() era una función integrada de PHP que recuperaba los registros de intercambio de correo (MX) para un nombre de dominio determinado, devolviendo un array ordenado por prioridad. Ha sido eliminada en PHP 8.2. El reemplazo recomendado es dns_get_record($hostname, DNS_MX).

Cómo usar la función dns_get_mx()

La sintaxis heredada es: Sintaxis de dns_get_mx()

php
dns_get_mx($hostname, &$mxhosts, &$weight);

La función toma tres parámetros:

  • $hostname: El nombre de dominio para el que deseas recuperar los registros MX.
  • $mxhosts: Una variable de referencia que almacena los servidores MX del dominio.
  • $weight: Una variable de referencia que almacena los pesos de prioridad.

A continuación, un ejemplo de cómo usar la función moderna dns_get_record() para recuperar registros MX: Búsqueda moderna de registros MX

php
<?php

$domain = "example.com";
$records = dns_get_record($domain, DNS_MX);

if ($records) {
  foreach ($records as $record) {
    echo "Host: " . $record['target'] . ", Priority: " . $record['priority'] . "<br/>";
  }
} else {
  echo "No MX records found for $domain";
}

En este ejemplo, recuperamos los registros MX para el dominio "example.com". La función devuelve un array de registros si se encuentran, o false en caso contrario. Si se encuentran registros, los recorremos con foreach y mostramos el servidor de destino y la prioridad. Ten en cuenta que las consultas DNS a veces pueden colgarse o fallar en dominios no válidos; verifica siempre el valor devuelto y considera implementar un manejo de tiempo de espera para aplicaciones en producción.

Conclusión

Aunque dns_get_mx() fue una vez el estándar para recuperar registros MX, ha sido eliminada en PHP 8.2. Usa dns_get_record($hostname, DNS_MX) en su lugar para consultas DNS modernas y confiables. Esperamos que esta guía te ayude a implementar búsquedas de registros MX de manera efectiva en tus aplicaciones PHP.

Práctica

¿Qué realiza la función dns_get_mx() en PHP?

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.