Inviare email transazionali con Brevo / ex Sendinblue

Da poco tempo Sendinblue ha completato un'operazione di rebranding e ora si chiama Brevo, per riflettere una serie di aggiornamenti alla piattaforma che ora oltre a permettere l'invio di mail permette anche di gestire il processo di vendita creando relazioni con i clienti mediante diversi canali (tracking dei lead, automation, prenotazione meeting, ...).

Per quanto riguarda l'automation una funzionalità estremamente utile è quella dell'invio di mail transazionali, ad esempio da inviare a un cliente dopo un acquisto sulla nostra piattaforma ecommerce o magari dopo una settimana per richiedere una recensione per l'acquisto fatto.

Con PHP e con le librerie Sendinblue (su queste hanno ancora mantenuto il vecchio nome) è piuttosto semplice.
Immaginiamo di inviare un ringraziamento per l'acquisto fatto a un cliente con una richiesta di recensione.

MODELLI

Come prima cosa è possibile dalla piattaforma creare un modello per la mail da inviare, in modo da gestirlo più comodamente online.
Dal menu Transazionale -> Email -> Modelli è possibile crearne diversi per le varie esigenze e ad ognuno viene assegnato un ID (ci servirà dopo).

API KEY

Dal menu del proprio profilo è ora necessario creare una API KEY.
Cliccando sull'icona del profilo selezionare "SMTP e API"; una volta aperta la pagina spostarsi nel tab "Chiavi API" e crearne una.

Al momento in cui scrivo una volta creata non è più possibile copiarla, quindi quando appare meglio copiarla subito e salvarla in un posto sicuro!

Ovviamente è comunque possibile creare più chiavi API senza problemi.

CODICE

A questo punto possiamo iniziare lato applicazione. Come prima cosa con composer scarichiamo la libreria:

composer require sendinblue/api-v3-sdk "8.x.x"

e in PHP con poche righe di codice possiamo inviare la nostra prima mail.

Il codice è abbastanza semplice, con i commenti ho definito i vari passaggi:

require_once('./vendor/autoload.php');

//definizione API KEY
define('BREVO_API_KEY', 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx');

//inizializzazione API
$config = SendinBlue\Client\Configuration::getDefaultConfiguration()->setApiKey('api-key', BREVO_API_KEY);
$apiInstance = new SendinBlue\Client\Api\TransactionalEmailsApi(
  new GuzzleHttp\Client(),
  $config
);

//creo un nuovo oggetto SendSmtpEmail
$sendSmtpEmail = new \SendinBlue\Client\Model\SendSmtpEmail();
//seleziono il template da usare
$sendSmtpEmail['templateId'] = 1;
//qui viene definito il mittente
$sendSmtpEmail['sender'] = [
  'email' => 'info@mariorossi.it',
  'name' => 'Mario Rossi'
];
//inviamo la mail a un singolo contatto in questo caso
//ATTENZIONE: il parametro "to" è un array multidimensionale
$sendSmtpEmail['to'] = array(
  [
    'email' => 'mailcliente@testdomain.com'
  ]
);

//a questo punto è possibile procedere all'invio della mail
try {
  $sendSmtpEmailresult = $apiInstance->sendTransacEmail($sendSmtpEmail);
  if ($sendSmtpEmailresult) {
    print_r($sendSmtpEmailresult); //risultato della chiamata API
  }
} catch (Exception $e) {
  echo 'Exception when calling TransactionalEmailsApi->sendTransacEmail: ', $e->getMessage(), PHP_EOL;
}

 


Commenti