Tutorial
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, ad esempio
acme.com. L’indirizzo From del sito deve usarlo. - Una chiave API. 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, 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.
Configura WP Mail SMTP
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.
-
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.
-
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.
-
Scegli Other SMTP. In Mailer, scegli Other SMTP.
-
Inserisci il server. Imposta SMTP Host su
smtp.emailit.com, Encryption su TLS e SMTP Port su587. Lascia attivo Auto TLS. -
Inserisci le credenziali. Attiva Authentication. Imposta SMTP Username su
emailite SMTP Password sulla tua chiave API. Salva le impostazioni. -
Invia un test. Usa lo strumento Email Test del plugin per inviare un messaggio al tuo indirizzo. Compare in Email APIEmails 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! */:
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:
define( 'EMAILIT_API_KEY', 'secret_••••••••••••••••••••••••••••••••' );Poi crea questo file:
<?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
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 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 APILogs 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.
- Non inviare newsletter tramite wp_mail. Per le email di marketing a una lista, usa le Campagne, 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. |
Per altre informazioni, vedi Risoluzione dei problemi SMTP.