Catégories
Dev

SendInBlue et Laravel : envoyer un mail avec un modèle

Mini-tutoriel pour envoyer un mail transactionnel avec send in blue avec Laraval via les API et les modèles transactionnels.

La future licorne française SendInBlue est une belle solution française pour l’envois de vos emails, newletters et emails transactionnels. Très bien documenté, il est facile de l’utiliser directement dans votre framework préféré Laravel.

Création d’un compte SendInBlue

La première étape consiste à créer un compte en ligne chez SendInBlue, la création est totalement gratuite et permet déjà d’utiliser activement le système.

Ajout de la librairie des API

On ajoute la librairie sendinblue dans composer.

composer require sendinblue/api-v3-sdk

Mise en place de la configuration

On ouvre ensuite le fichier .env afin d’ajouter différents éléments de configuration. La clé SENDINBLUE doit contenir la clé API à récupérer sur l’interface sendinblue.

SENDINBLUE=xkeysib-....................
SENDINBLUE_EMAIL=monmail@test.fr
SENDINBLUE_NAME="Nom Envoyeur"

Méthode d’envois

Voilà une petite méthode d’envois que vous pouvez positionner dans un controller ou dans une classe à part. Les paramètres d’envois prennent l’ID du modèle de template dans SendInBlue, l’adresse du destinataire et un tableau de paramètres.

    public static function send($templateId, $to, $params) 
    {
        $config = \SendinBlue\Client\Configuration::getDefaultConfiguration()->setApiKey('api-key', ENV('SENDINBLUE'));
        $apiInstance = new \SendinBlue\Client\Api\TransactionalEmailsApi(
            new \GuzzleHttp\Client(),
            $config
        );

        $sendSmtpEmail = new \SendinBlue\Client\Model\SendSmtpEmail(); \SendinBlue\Client\Model\SendSmtpEmail | Values to send a transactional email
        $sendSmtpEmail["sender"] = new \SendinBlue\Client\Model\SendSmtpEmailSender(["name"=>env("SENDINBLUE_NAME"), "email"=>env("SENDINBLUE_EMAIL")]);
        $sendSmtpEmail["to"] = [new \SendinBlue\Client\Model\SendSmtpEmailTo($to)];
        $sendSmtpEmail["templateId"] = $templateId;
        $sendSmtpEmail["params"] = $params;
        $sendSmtpEmail["replyTo"] = new \SendinBlue\Client\Model\SendSmtpEmailReplyTo(["email"=> env("SENDINBLUE_EMAIL")]);
        $result = $apiInstance->sendTransacEmail($sendSmtpEmail);
    }

Créer son modèle

On se connecte sur l’interface SendInBlue, puis dans le menu « Transactionnel » on va dans la partie « Templates ».

Puis on créer un nouveau modèle avec l’aide de l’outil. On va également pouvoir afficher des paramètres passés par votre application à l’aide du short code {{param.MON_PARAMETRE}}.

Envoyer son premier mail

Il ne reste plus qu’à envoyer son premier mail, en appelant tout simplement la fonction send() :

$params = (object) [
   'MON_PARAMETRE1' => 'VALEUR1',
   'MON_PARAMETRE2' => 'VALEUR2
];
send(id_model,["email"=>"destinataire@test.fr], $params);

Laisser un commentaire