Enviar email con wp_mail()
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:
truesi el email fue aceptado para envío,falsesi hubo algún error. Nota: aceptado para envío no garantiza que llegue al destinatario.
