# Invia le email di WordPress con Emailit

> Instrada le email di WordPress, WooCommerce e dei moduli di contatto tramite l’SMTP di Emailit con WP Mail SMTP o un piccolo plugin, usando una chiave API come password.

WordPress invia i reset delle password, gli ordini di WooCommerce e i messaggi dei moduli di contatto con `wp_mail()`, che per impostazione predefinita usa la configurazione di posta del server e spesso finisce nello spam. Questa guida instrada queste email tramite l’SMTP relay di Emailit, con il plugin WP Mail SMTP o con poche righe di codice.

## Prerequisiti

- Accesso da amministratore al tuo sito WordPress.
- Un [dominio di invio verificato](/it/docs/domains/add-a-domain/), ad esempio `acme.com`. L’indirizzo From del sito deve usarlo.
- Una [chiave API](/it/docs/developers/api-keys/). Crea una chiave **Sending Only** limitata al tuo dominio, con un nome come `wordpress-acme`, così un’impostazione del plugin finita nelle mani sbagliate non può essere usata per nient’altro.
- Finché il workspace non ha l’[accesso alla produzione](/it/docs/workspaces/production-access/), puoi inviare solo agli indirizzi email degli account dei membri del workspace. Fai i test con il tuo indirizzo.

## Impostazioni SMTP

Questi sono i valori da inserire in qualsiasi plugin SMTP:

| Impostazione | Valore |
| --- | --- |
| Host SMTP | `smtp.emailit.com` |
| Crittografia | TLS (STARTTLS) |
| Porta SMTP | `587` |
| Autenticazione | Attiva |
| Nome utente SMTP | `emailit` |
| Password SMTP | La tua chiave API (`secret_…`) |
| Email del mittente (From) | Un indirizzo del tuo dominio verificato, ad esempio `hello@acme.com` |

Se il tuo host blocca la porta 587, usa la `2525` o la `2587` con TLS, oppure la `465` con SSL. Vedi [Impostazioni SMTP](/it/docs/smtp/settings/).

## Configura WP Mail SMTP

[WP Mail SMTP](https://wordpress.org/plugins/wp-mail-smtp/) è un plugin gratuito che sostituisce il sistema di invio della posta di WordPress. Altri plugin SMTP, come FluentSMTP o Post SMTP, usano le stesse impostazioni con etichette leggermente diverse.

1. **Installa il plugin.** In WordPress, vai a **Plugins > Add New**, cerca **WP Mail SMTP**, poi installalo e attivalo. Se si apre la procedura guidata di configurazione, saltala: puoi configurare tutto nella pagina delle impostazioni.

2. **Imposta il mittente.** Apri le impostazioni del plugin. Imposta **From Email** su un indirizzo del tuo dominio verificato e attiva **Force From Email**, così ogni plugin invia da quell’indirizzo. Imposta **From Name** sul nome del sito o dell’azienda.

3. **Scegli Other SMTP.** In **Mailer**, scegli **Other SMTP**.

4. **Inserisci il server.** Imposta **SMTP Host** su `smtp.emailit.com`, **Encryption** su **TLS** e **SMTP Port** su `587`. Lascia attivo **Auto TLS**.

5. **Inserisci le credenziali.** Attiva **Authentication**. Imposta **SMTP Username** su `emailit` e **SMTP Password** sulla tua chiave API. Salva le impostazioni.

6. **Invia un test.** Usa lo strumento **Email Test** del plugin per inviare un messaggio al tuo indirizzo. Compare in **Email API → Emails** in pochi secondi.

### Tieni la chiave fuori dal database

WP Mail SMTP può leggere le impostazioni da costanti, così la chiave API si trova in `wp-config.php` invece che nel database. Aggiungi queste righe sopra `/* 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' );
```

La pagina delle impostazioni mostra quindi questi valori come bloccati. Se un campo non legge la sua costante, consulta la documentazione del plugin.

## Configura senza plugin

Se preferisci non installare un plugin, aggiungi un must-use plugin che configura il PHPMailer integrato di WordPress. Definisci la chiave in `wp-config.php`:

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

Poi crea questo file:

```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' );
```

I file in `mu-plugins` vengono caricati automaticamente e non si possono disattivare dalla schermata di amministrazione.

## Ricevi i webhook

La maggior parte dei siti non ha bisogno dei webhook. Se vuoi reagire a bounce o segnalazioni, ad esempio per contrassegnare l’indirizzo di un cliente WooCommerce, registra una route REST e verifica la firma. Salva il secret di firma del webhook in `wp-config.php` come `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 );
        },
    ] );
} );
```

Indirizza il [webhook](/it/docs/webhooks/set-up/) a `https://acme.com/wp-json/emailit/v1/webhook`. È il controllo della firma a proteggere la route, quindi non rimuoverlo.

## Consigli per la produzione

- **Forza l’indirizzo From.** I plugin di WooCommerce, dei moduli di contatto e delle membership spesso impostano un proprio mittente. Forzare un indirizzo From del tuo dominio verificato evita gli errori `530 From/Sender domain is not verified`.
- **Controlla i log quando qualcosa non funziona.** **Email API → Logs** mostra ogni accesso SMTP e ogni messaggio con il suo codice di stato, filtrati per chiave API.
- **Tieni d’occhio i limiti.** Per impostazione predefinita, i nuovi workspace possono inviare 2 email al secondo e 5000 al giorno. Una grande promozione su WooCommerce o un plugin per newsletter possono raggiungerli; per chiederne di più, vedi [Limiti e quote](/it/docs/limits/).
- **Non inviare newsletter tramite wp_mail.** Per le email di marketing a una lista, usa le [Campagne](/it/docs/campaigns/), che gestiscono per te i link di disiscrizione e le liste.

## Risoluzione dei problemi

| Sintomo | Causa | Soluzione |
| --- | --- | --- |
| `535 Authentication failed` | La password non è una chiave API valida. | Incolla la chiave completa, compreso `secret_`, e usa `emailit` come nome utente. |
| `530 From/Sender domain is not verified for this workspace` | L’indirizzo From non appartiene a un dominio verificato. | Imposta e forza un’email From del tuo dominio verificato. |
| `530 API key is restricted to sending domain` | La chiave è limitata a un altro dominio. | Usa un indirizzo From del dominio della chiave, oppure un’altra chiave. |
| Timeout della connessione | Il tuo host blocca la porta. | Prova la porta `2525` o `2587` con TLS, oppure chiedi al tuo host di consentire l’SMTP in uscita. |
| `550 Unverified workspaces can only send to workspace members' account emails` | Il workspace non ha ancora l’accesso alla produzione. | [Richiedi l’accesso alla produzione](/it/docs/workspaces/production-access/). |

Per altre informazioni, vedi [Risoluzione dei problemi SMTP](/it/docs/smtp/troubleshooting/).

## Passaggi successivi

  - [Impostazioni SMTP](/it/docs/smtp/settings/): Porte, TLS e credenziali.
  - [Best practice per la deliverability](/it/docs/deliverability/best-practices/): Tieni le tue email fuori dallo spam.
  - [Stati delle email](/it/docs/logs/email-statuses/): Cosa significa ogni stato nell’elenco Emails.
  - [Chiavi API](/it/docs/developers/api-keys/): Permessi, limitazioni a un dominio e rotazione.

---
Fonte: https://emailit.com/it/docs/frameworks/wordpress/
