# Enviar el correo de WordPress con Emailit

> Envía el correo de WordPress, WooCommerce y los formularios de contacto a través del SMTP de Emailit con WP Mail SMTP o con un pequeño plugin, usando una clave de API como contraseña.

WordPress envía los restablecimientos de contraseña, los pedidos de WooCommerce y los mensajes de los formularios de contacto con `wp_mail()`, que por defecto usa la configuración de correo del servidor y a menudo acaba en spam. En esta guía se envía ese correo a través del SMTP relay de Emailit, con el plugin WP Mail SMTP o con unas pocas líneas de código.

## Requisitos previos

- Acceso de administrador a tu sitio WordPress.
- Un [dominio de envío verificado](/es/docs/domains/add-a-domain/), por ejemplo `acme.com`. La dirección del remitente de tu sitio debe usarlo.
- Una [clave de API](/es/docs/developers/api-keys/). Crea una clave **Sending Only** limitada a tu dominio, con un nombre como `wordpress-acme`, para que, si se filtra la configuración de un plugin, no pueda usarse para nada más.
- Hasta que tu espacio de trabajo tenga [acceso de producción](/es/docs/workspaces/production-access/), solo puedes enviar a las direcciones de email de las cuentas de los miembros del espacio de trabajo. Haz las pruebas con tu propia dirección.

## Configuración SMTP

Estos son los valores que debes introducir en cualquier plugin SMTP:

| Ajuste | Valor |
| --- | --- |
| Host SMTP | `smtp.emailit.com` |
| Cifrado | TLS (STARTTLS) |
| Puerto SMTP | `587` |
| Autenticación | Activada |
| Usuario SMTP | `emailit` |
| Contraseña SMTP | Tu clave de API (`secret_…`) |
| Email del remitente | Una dirección de tu dominio verificado, por ejemplo `hello@acme.com` |

Si tu proveedor de hosting bloquea el puerto 587, usa `2525` o `2587` con TLS, o `465` con SSL. Consulta [Configuración SMTP](/es/docs/smtp/settings/).

## Configurar WP Mail SMTP

[WP Mail SMTP](https://wordpress.org/plugins/wp-mail-smtp/) es un plugin gratuito que sustituye el transporte de correo de WordPress. Otros plugins SMTP, como FluentSMTP o Post SMTP, usan la misma configuración con etiquetas algo distintas.

1. **Instala el plugin.** En WordPress, ve a **Plugins > Add New**, busca **WP Mail SMTP** y después instálalo y actívalo. Si se abre el asistente de configuración, sáltalo; puedes configurarlo todo en la página de ajustes.

2. **Define el remitente.** Abre los ajustes del plugin. En **From Email**, introduce una dirección de tu dominio verificado y activa **Force From Email** para que todos los plugins envíen desde esa dirección. En **From Name**, introduce el nombre de tu sitio o de tu empresa.

3. **Elige Other SMTP.** En **Mailer**, elige **Other SMTP**.

4. **Introduce el servidor.** Define **SMTP Host** como `smtp.emailit.com`, **Encryption** como **TLS** y **SMTP Port** como `587`. Deja activado **Auto TLS**.

5. **Introduce las credenciales.** Activa **Authentication**. Define **SMTP Username** como `emailit` y **SMTP Password** como tu clave de API. Guarda los ajustes.

6. **Envía una prueba.** Usa la herramienta **Email Test** del plugin para enviar un mensaje a tu propia dirección. Aparece en **Email API → Emails** en unos segundos.

### Mantener la clave fuera de la base de datos

WP Mail SMTP puede leer sus ajustes de constantes, así que la clave de API se guarda en `wp-config.php` en lugar de en la base de datos. Añade estas líneas encima de `/* That's all, stop editing! */`:

```php title="wp-config.php"
define( 'WPMS_ON', true );
define( 'WPMS_MAILER', 'smtp' );
define( 'WPMS_SMTP_HOST', 'smtp.emailit.com' );
define( 'WPMS_SMTP_PORT', 587 );
define( 'WPMS_SSL', 'tls' );
define( 'WPMS_SMTP_AUTH', true );
define( 'WPMS_SMTP_AUTOTLS', true );
define( 'WPMS_SMTP_USER', 'emailit' );
define( 'WPMS_SMTP_PASS', 'secret_••••••••••••••••••••••••••••••••' );
define( 'WPMS_MAIL_FROM', 'hello@acme.com' );
define( 'WPMS_MAIL_FROM_FORCE', true );
define( 'WPMS_MAIL_FROM_NAME', 'Acme' );
```

A partir de ese momento, la página de ajustes muestra estos valores bloqueados. Si un campo no toma el valor de su constante, consulta la documentación del plugin.

## Configurar sin plugin

Si prefieres no instalar un plugin, añade un plugin must-use que configure el PHPMailer integrado de WordPress. Define la clave en `wp-config.php`:

```php title="wp-config.php"
define( 'EMAILIT_API_KEY', 'secret_••••••••••••••••••••••••••••••••' );
```

Después, crea este archivo:

```php title="wp-content/mu-plugins/emailit-smtp.php"
<?php
/**
 * Plugin Name: Emailit SMTP
 * Description: Sends all WordPress email through the Emailit SMTP relay.
 */

add_action( 'phpmailer_init', function ( $phpmailer ) {
    $phpmailer->isSMTP();
    $phpmailer->Host       = 'smtp.emailit.com';
    $phpmailer->Port       = 587;
    $phpmailer->SMTPSecure = 'tls';
    $phpmailer->SMTPAuth   = true;
    $phpmailer->Username   = 'emailit';
    $phpmailer->Password   = EMAILIT_API_KEY;
} );

add_filter( 'wp_mail_from', fn () => 'hello@acme.com' );
add_filter( 'wp_mail_from_name', fn () => 'Acme' );
```

Los archivos de `mu-plugins` se cargan automáticamente y no se pueden desactivar desde el panel de administración.

## Recibir webhooks

La mayoría de los sitios no necesitan webhooks. Si quieres reaccionar a los rebotes o a las quejas, por ejemplo para marcar la dirección de un cliente de WooCommerce, registra una ruta REST y verifica la firma. Guarda el secreto de firma del webhook en `wp-config.php` como `EMAILIT_WEBHOOK_SECRET`:

```php title="wp-content/mu-plugins/emailit-webhooks.php"
<?php
add_action( 'rest_api_init', function () {
    register_rest_route( 'emailit/v1', '/webhook', [
        'methods'             => 'POST',
        'permission_callback' => '__return_true',
        'callback'            => function ( WP_REST_Request $request ) {
            $payload   = $request->get_body();
            $timestamp = (string) $request->get_header( 'x-emailit-timestamp' );
            $signature = (string) $request->get_header( 'x-emailit-signature' );
            $expected  = hash_hmac( 'sha256', $timestamp . '.' . $payload, EMAILIT_WEBHOOK_SECRET );

            if ( abs( time() - (int) $timestamp ) > 300 || ! hash_equals( $expected, $signature ) ) {
                return new WP_Error( 'invalid_signature', 'Invalid signature', [ 'status' => 401 ] );
            }

            foreach ( json_decode( $payload, true ) as $event ) {
                if ( 'email.bounced' === $event['type'] ) {
                    // Flag $event['data']['object']['to'].
                }
            }

            return new WP_REST_Response( null, 200 );
        },
    ] );
} );
```

Apunta el [webhook](/es/docs/webhooks/set-up/) a `https://acme.com/wp-json/emailit/v1/webhook`. La comprobación de la firma es lo que protege la ruta, así que no la quites.

## Consejos para producción

- **Fuerza la dirección del remitente.** Los plugins de WooCommerce, de formularios de contacto y de membresías suelen definir su propio remitente. Forzar una dirección del remitente de tu dominio verificado evita los errores `530 From/Sender domain is not verified`.
- **Revisa los registros cuando algo falle.** **Email API → Logs** muestra cada inicio de sesión SMTP y cada mensaje con su código de estado, filtrados por clave de API.
- **Vigila tus límites.** Por defecto, los espacios de trabajo nuevos pueden enviar 2 emails por segundo y 5000 al día. Una gran venta en WooCommerce o un plugin de newsletters pueden alcanzarlos; para solicitar más, consulta [Límites y cuotas](/es/docs/limits/).
- **No envíes newsletters con wp_mail.** Para el email de marketing a una lista, usa [Campañas](/es/docs/campaigns/), que se encargan por ti de los enlaces de baja y de las listas de contactos.

## Solución de problemas

| Síntoma | Causa | Solución |
| --- | --- | --- |
| `535 Authentication failed` | La contraseña no es una clave de API válida. | Pega la clave completa, con `secret_`, y usa `emailit` como usuario. |
| `530 From/Sender domain is not verified for this workspace` | La dirección del remitente no pertenece a un dominio verificado. | Define y fuerza un email del remitente de tu dominio verificado. |
| `530 API key is restricted to sending domain` | La clave está limitada a otro dominio. | Usa una dirección del remitente del dominio de la clave u otra clave. |
| Se agota el tiempo de espera de la conexión | Tu proveedor de hosting bloquea el puerto. | Prueba con el puerto `2525` o `2587` con TLS, o pide a tu proveedor de hosting que permita el SMTP saliente. |
| `550 Unverified workspaces can only send to workspace members' account emails` | El espacio de trabajo aún no tiene acceso de producción. | [Solicita acceso de producción](/es/docs/workspaces/production-access/). |

Para más información, consulta [Solución de problemas de SMTP](/es/docs/smtp/troubleshooting/).

## Próximos pasos

  - [Configuración SMTP](/es/docs/smtp/settings/): Puertos, TLS y credenciales.
  - [Buenas prácticas de entregabilidad](/es/docs/deliverability/best-practices/): Evita que tu correo acabe en spam.
  - [Estados de los emails](/es/docs/logs/email-statuses/): Qué significa cada estado de la lista Emails.
  - [Claves de API](/es/docs/developers/api-keys/): Permisos, limitación por dominio y rotación.

---
Fuente: https://emailit.com/es/docs/frameworks/wordpress/
