Vai al contenuto

Tutorial5 min di lettura

Inviare email con PHP

Scopri come inviare email in PHP utilizzando l’SDK PHP di Emailit. Dai messaggi semplici ai template, allegati e invii programmati, tutto con un’API moderna e intuitiva.

GDi

Inviare email con PHP

L’invio di email da PHP ha tradizionalmente significato lottare con mail(), configurare server SMTP o includere dipendenze pesanti. L’SDK PHP di Emailit ti offre un’alternativa pulita e moderna. Puoi inviare email transazionali, gestire domini, verificare indirizzi e gestire webhook, tutto attraverso un semplice client API.

PHP rimane uno dei linguaggi più utilizzati per lo sviluppo web, e l’invio di email è un requisito fondamentale per quasi ogni applicazione PHP. Che tu stia costruendo un prodotto SaaS, un e-commerce o un sistema di gestione dei contenuti, la consegna affidabile delle email è essenziale per l’onboarding degli utenti, il reset delle password, le conferme d’ordine e le campagne di marketing. Invece di affidarti alla funzione integrata mail() di PHP, che offre un controllo limitato e nessuna garanzia di consegna, con un’API email dedicata i tuoi messaggi arrivano davvero nella casella di posta.

In questa guida ti mostreremo come installare l’SDK e utilizzarlo per inviare email da qualsiasi applicazione PHP.

Requisiti

Installazione

Installa l’SDK tramite Composer:

composer require emailit/emailit-php

L’SDK PHP di Emailit è disponibile come pacchetto Composer, quindi si integra perfettamente in qualsiasi progetto PHP che utilizza Composer per la gestione delle dipendenze. Non è necessario includere file manualmente o utilizzare autoloader personalizzati.

Inizializzare il client

Crea un’istanza del client con la tua chiave API:

require 'vendor/autoload.php';

$emailit = Emailit::client('your_api_key');

Trovi la tua chiave API nel pannello di Emailit, alla voce Chiavi API.

Inviare un’email di base

Per inviare un’email basta una sola chiamata:

$email = $emailit->emails()->send([
    'from'    => 'hello@tuodominio.com',
    'to'      => ['utente@esempio.com'],
    'subject' => 'Ciao da Emailit',
    'html'    => '<h1>Benvenuto!</h1><p>Grazie per esserti registrato.</p>',
]);

echo $email->id;     // em_abc123...
echo $email->status; // pending

Tutti i metodi del servizio restituiscono oggetti risorsa tipizzati con accesso diretto alle proprietà, così sai sempre esattamente con cosa stai lavorando.

Rispetto all’utilizzo della funzione nativa mail() di PHP, inviare email tramite API ti offre tracciamento della consegna, gestione dei bounce e informazioni dettagliate sullo stato per ogni messaggio. Non devi preoccuparti di configurare Sendmail o Postfix sul tuo server, e ottieni una consegna affidabile su tutti i principali provider email come Gmail, Outlook e Yahoo.

Inviare con un template

Se hai creato un template nel pannello di Emailit, puoi richiamarlo tramite il suo slug e passare le variabili:

$email = $emailit->emails()->send([
    'from'      => 'hello@tuodominio.com',
    'to'        => 'utente@esempio.com',
    'template'  => 'email_benvenuto',
    'variables' => [
        'nome'    => 'Mario Rossi',
        'azienda' => 'Acme S.r.l.',
    ],
]);

I template tengono il contenuto delle email fuori dal codice e permettono anche a chi non sviluppa di aggiornare i testi senza un deploy. È particolarmente utile per email transazionali come messaggi di benvenuto, link per il reset della password, ricevute e notifiche di spedizione, dove grafica e testi cambiano più spesso del codice che le invia.

Inviare con allegati

Allega file passando contenuto codificato in base64:

$email = $emailit->emails()->send([
    'from'        => 'fatture@tuodominio.com',
    'to'          => 'cliente@esempio.com',
    'subject'     => 'La tua Fattura #12345',
    'html'        => '<p>Trovi in allegato la tua fattura.</p>',
    'attachments' => [
        [
            'filename'     => 'fattura.pdf',
            'content'      => base64_encode(file_get_contents('fattura.pdf')),
            'content_type' => 'application/pdf',
        ],
    ],
]);

Puoi allegare PDF, immagini, fogli di calcolo o qualsiasi altro tipo di file. Si usa spesso per inviare fatture, report o documenti generati direttamente dalla tua applicazione PHP, senza bisogno di un link di download separato.

Programmare un’email per dopo

Passa un timestamp scheduled_at per inviare in una data futura:

$email = $emailit->emails()->send([
    'from'         => 'promemoria@tuodominio.com',
    'to'           => 'utente@esempio.com',
    'subject'      => 'Promemoria Appuntamento',
    'html'         => '<p>Il tuo appuntamento è domani alle 14:00.</p>',
    'scheduled_at' => '2026-04-10T09:00:00Z',
]);

echo $email->status;       // scheduled
echo $email->scheduled_at; // 2026-04-10T09:00:00Z

Le email programmate possono essere annullate prima dell’invio:

$emailit->emails()->cancel('em_abc123');

La programmazione è utile per le comunicazioni legate a una scadenza, come promemoria di appuntamenti, avvisi di rinnovo degli abbonamenti e campagne drip, in cui il momento dell’invio conta quanto il contenuto.

Elencare e gestire le email inviate

Recupera un elenco paginato delle tue email:

$emails = $emailit->emails()->list(['page' => 1, 'limit' => 10]);

foreach ($emails as $email) {
    echo $email->id . ' - ' . $email->status . "\n";
}

Ritenta un’email non riuscita:

$emailit->emails()->retry('em_abc123');

La piena visibilità sulle email inviate e sul loro stato di consegna, insieme alla possibilità di ritentare quelle non riuscite, ti dà un livello di controllo che la funzione mail() di PHP semplicemente non può offrire. Questo è fondamentale per applicazioni dove ogni email conta, come ricevute transazionali, link di verifica account e codici di autenticazione a due fattori.

Verificare gli indirizzi email prima dell’invio

Riduci i bounce verificando gli indirizzi in anticipo:

$result = $emailit->emailVerifications()->verify([
    'email' => 'test@esempio.com',
]);

echo $result->status; // valid
echo $result->score;  // 0.95
echo $result->risk;   // low

La verifica email è una best practice per proteggere la tua reputazione di mittente. Inviare a indirizzi non validi o usa e getta aumenta il tasso di bounce, che può far scattare i filtri antispam e danneggiare la deliverability di tutto il dominio. Verificando gli indirizzi prima dell’invio, mantieni basso il tasso di bounce e intatta la tua reputazione.

Gestire eventi webhook

L’SDK include classi di eventi tipizzate e verifica della firma per i webhook. Questo ti permette di reagire agli eventi di consegna in tempo reale:

use Emailit\WebhookSignature;
use Emailit\Events\EmailDelivered;
use Emailit\Events\EmailBounced;

$event = WebhookSignature::verify(
    file_get_contents('php://input'),
    $_SERVER['HTTP_X_EMAILIT_SIGNATURE'],
    $_SERVER['HTTP_X_EMAILIT_TIMESTAMP'],
    'your_webhook_signing_secret'
);

match (true) {
    $event instanceof EmailDelivered => gestisciConsegna($event),
    $event instanceof EmailBounced   => gestisciRimbalzo($event),
    default                          => log("Non gestito: {$event->type}"),
};

I webhook permettono alla tua applicazione PHP di reagire all’istante quando un’email viene consegnata, rimbalza, viene aperta o cliccata. È essenziale per costruire flussi event-driven, come aggiornare un CRM quando un messaggio viene consegnato, avvisare il team di supporto in caso di bounce o tracciare le metriche di engagement delle tue campagne.

Gestione degli errori

L’SDK lancia eccezioni tipizzate così puoi gestire ogni caso di errore con precisione:

use Emailit\Exceptions\AuthenticationException;
use Emailit\Exceptions\RateLimitException;
use Emailit\Exceptions\UnprocessableEntityException;
use Emailit\Exceptions\ApiErrorException;

try {
    $emailit->emails()->send([...]);
} catch (AuthenticationException $e) {
    // Chiave API non valida (401)
} catch (RateLimitException $e) {
    // Troppe richieste (429)
} catch (UnprocessableEntityException $e) {
    // Validazione fallita (422)
} catch (ApiErrorException $e) {
    // Qualsiasi altro errore API
    echo $e->getHttpStatus();
}

Una gestione corretta degli errori fa sì che la tua applicazione continui a funzionare in modo controllato quando qualcosa va storto. Le eccezioni di rate limit, per esempio, si possono gestire con una strategia di nuovi tentativi, mentre gli errori di autenticazione dovrebbero far scattare un avviso, così puoi sostituire la chiave API.

Oltre le email

L’SDK ti dà accesso all’intera API di Emailit, non solo all’invio. Puoi gestire domini, chiavi API, liste, iscritti, template, soppressioni, contatti ed eventi, tutto da PHP:

$domain = $emailit->domains()->create(['name' => 'esempio.com']);
$contact = $emailit->contacts()->create(['email' => 'utente@esempio.com']);
$templates = $emailit->templates()->list();

Questo rende l’SDK PHP di Emailit un toolkit completo per l’infrastruttura email. Invece di utilizzare librerie o servizi separati per la gestione dei domini, liste di contatti e invio email, puoi gestire tutto attraverso un singolo client PHP coerente.

Inizia subito

Installa l’SDK e invia la tua prima email in meno di un minuto:

composer require emailit/emailit-php

Consulta la documentazione completa dell’SDK su GitHub, oppure vai al riferimento API per i dettagli su ogni endpoint.

Condividi

Prova quello di cui hai appena letto.

3000 email al mese gratis. Nessuna carta di credito richiesta.

3000 email al mese gratis · Nessuna carta di credito