Enviar email con wp_mail()

Php marzo 10, 2026

wp_mail() es la función nativa de WordPress para enviar emails. Usa PHPMailer internamente y respeta la configuración del servidor o de plugins SMTP que el usuario tenga instalados. Siempre es preferible a usar mail() directamente porque se integra con el ecosistema WordPress y es más fiable.

Casos de uso: email de bienvenida al registrarse, notificaciones de formularios de contacto, alertas de administración, confirmaciones de pedidos o reservas en plugins a medida.

<?php
function mi_plugin_enviar_email( $destinatario, $nombre ) {
    $asunto  = 'Bienvenido a ' . get_bloginfo( 'name' );
    $mensaje = sprintf(
        '

Hola %s,

Gracias por registrarte en %s.

', esc_html( $nombre ), esc_html( get_bloginfo( 'name' ) ) ); $headers = array( 'Content-Type: text/html; charset=UTF-8', 'From: ' . get_bloginfo( 'name' ) . ' <' . get_option( 'admin_email' ) . '>', ); $enviado = wp_mail( sanitize_email( $destinatario ), $asunto, $mensaje, $headers ); return $enviado; }

¿Qué hace cada parte?

  • sprintf(): construye el mensaje combinando la plantilla HTML con los datos variables de forma segura y legible.
  • esc_html(): escapa el nombre y el nombre del sitio antes de insertarlos en HTML. Impide que un nombre como <script>alert(1)</script> se ejecute.
  • Content-Type: text/html: indica al cliente de email que el contenido es HTML y debe renderizarse. Sin esta cabecera, las etiquetas HTML aparecerían como texto plano.
  • From:: establece el remitente visible. Sin esta cabecera, muchos servidores de correo marcan el email como spam.
  • sanitize_email(): limpia y valida la dirección de email antes de usarla.
  • wp_mail() devuelve boolean: true si el email fue aceptado para envío, false si hubo algún error. Nota: aceptado para envío no garantiza que llegue al destinatario.