Envoi d'e-mails avec PHP

L'envoi d'emails depuis PHP a toujours signifié se battre avec mail(), configurer des serveurs SMTP, ou intégrer des dépendances lourdes. Le SDK PHP Emailit vous offre une alternative moderne et élégante. Vous pouvez envoyer des emails transactionnels, gérer des domaines, vérifier des adresses, et traiter les webhooks, le tout via un client API simple.
PHP reste l'un des langages les plus utilisés pour le développement web, et l'envoi d'emails est un prérequis fondamental pour pratiquement toute application PHP. Que vous développiez un produit SaaS, une boutique e-commerce, ou un système de gestion de contenu, une livraison d'emails fiable est essentielle pour l'intégration des utilisateurs, la réinitialisation de mots de passe, les confirmations de commande, et les campagnes marketing. Plutôt que de s'appuyer sur la fonction native mail() de PHP, qui offre un contrôle limité et aucune garantie de livraison, utiliser une API email dédiée garantit que vos messages atteignent effectivement la boîte de réception.
Dans ce guide, nous allons parcourir l'installation du SDK et son utilisation pour envoyer des emails depuis n'importe quelle application PHP.
Prérequis
- PHP 8.1 ou supérieur
- Un compte Emailit avec une clé API
- Composer
Installation
Installez le SDK via Composer :
composer require emailit/emailit-php
Le SDK PHP Emailit est disponible en tant que package Composer, il s'intègre donc parfaitement dans tout projet PHP qui utilise Composer pour la gestion des dépendances. Aucun besoin d'inclusions manuelles de fichiers ou d'autoloaders personnalisés.
Initialiser le client
Créez une instance client avec votre clé API :
require 'vendor/autoload.php';
$emailit = Emailit::client('your_api_key');
Vous pouvez trouver votre clé API dans le tableau de bord Emailit sous Clés API.
Envoyer un email basique
L'envoi d'un email ne nécessite qu'un seul appel de méthode :
$email = $emailit->emails()->send([
'from' => 'hello@votredomaine.com',
'to' => ['utilisateur@exemple.com'],
'subject' => 'Bonjour depuis Emailit',
'html' => '<h1>Bienvenue !</h1><p>Merci de vous être inscrit.</p>',
]);
echo $email->id; // em_abc123...
echo $email->status; // pending
Toutes les méthodes de service retournent des objets ressource typés avec accès direct aux propriétés, vous savez donc toujours exactement avec quoi vous travaillez.
Comparé à l'utilisation de la fonction native mail() de PHP, envoyer des emails via une API vous donne le suivi de livraison, la gestion des rebonds, et des informations de statut détaillées pour chaque message. Vous n'avez pas à vous soucier de configurer Sendmail ou Postfix sur votre serveur, et vous obtenez une livraison fiable sur tous les principaux fournisseurs d'email comme Gmail, Outlook, et Yahoo.
Envoyer avec un modèle
Si vous avez créé un modèle dans le tableau de bord Emailit, vous pouvez le référencer par son slug et passer des variables :
$email = $emailit->emails()->send([
'from' => 'hello@votredomaine.com',
'to' => 'utilisateur@exemple.com',
'template' => 'email_bienvenue',
'variables' => [
'nom' => 'Jean Dupont',
'entreprise' => 'Acme Inc',
],
]);
Les modèles gardent le contenu de vos emails hors de votre base de code et permettent aux non-développeurs de mettre à jour le texte sans déploiement. C'est particulièrement utile pour les emails transactionnels comme les messages de bienvenue, les liens de réinitialisation de mot de passe, les reçus de facture, et les notifications d'expédition où le design et la formulation changent plus souvent que le code qui les déclenche.
Envoyer avec des pièces jointes
Joignez des fichiers en passant du contenu encodé en base64 :
$email = $emailit->emails()->send([
'from' => 'factures@votredomaine.com',
'to' => 'client@exemple.com',
'subject' => 'Votre facture #12345',
'html' => '<p>Veuillez trouver votre facture en pièce jointe.</p>',
'attachments' => [
[
'filename' => 'facture.pdf',
'content' => base64_encode(file_get_contents('facture.pdf')),
'content_type' => 'application/pdf',
],
],
]);
Vous pouvez joindre des PDF, images, feuilles de calcul, ou tout autre type de fichier. C'est couramment utilisé pour envoyer des factures, rapports, ou documents générés directement depuis votre application PHP sans nécessiter un lien de téléchargement séparé.
Programmer un email pour plus tard
Passez un timestamp scheduled_at pour envoyer à une date future :
$email = $emailit->emails()->send([
'from' => 'rappels@votredomaine.com',
'to' => 'utilisateur@exemple.com',
'subject' => 'Rappel de rendez-vous',
'html' => '<p>Votre rendez-vous est demain à 14h.</p>',
'scheduled_at' => '2026-04-10T09:00:00Z',
]);
echo $email->status; // scheduled
echo $email->scheduled_at; // 2026-04-10T09:00:00Z
Les emails programmés peuvent être annulés avant leur envoi :
$emailit->emails()->cancel('em_abc123');
La programmation est utile pour les communications sensibles au temps comme les rappels de rendez-vous, les avis de renouvellement d'abonnement, et les campagnes d'égouttement où l'heure d'envoi compte autant que le contenu lui-même.
Lister et gérer les emails envoyés
Récupérez une liste paginée de vos emails :
$emails = $emailit->emails()->list(['page' => 1, 'limit' => 10]);
foreach ($emails as $email) {
echo $email->id . ' - ' . $email->status . "\n";
}
Relancez un email échoué :
$emailit->emails()->retry('em_abc123');
Avoir une visibilité complète sur vos emails envoyés, leur statut de livraison, et la capacité de relancer les échecs vous donne un niveau de contrôle que la fonction mail() de PHP ne peut tout simplement pas fournir. C'est critique pour les applications où chaque email compte, comme les reçus transactionnels, les liens de vérification de compte, et les codes d'authentification à deux facteurs.
Vérifier les adresses email avant l'envoi
Réduisez les rebonds en vérifiant les adresses en amont :
$result = $emailit->emailVerifications()->verify([
'email' => 'test@exemple.com',
]);
echo $result->status; // valid
echo $result->score; // 0.95
echo $result->risk; // low
La vérification d'email est une bonne pratique pour protéger votre réputation d'expéditeur. Envoyer vers des adresses email invalides ou jetables augmente votre taux de rebond, ce qui peut déclencher les filtres anti-spam et nuire à la délivrabilité sur l'ensemble de votre domaine. En vérifiant les adresses avant l'envoi, vous maintenez vos taux de rebond bas et votre réputation intacte.
Gérer les événements webhook
Le SDK inclut des classes d'événements typées et la vérification de signature pour les webhooks. Cela vous permet de réagir aux événements de livraison en temps réel :
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'],
'votre_secret_signature_webhook'
);
match (true) {
$event instanceof EmailDelivered => gererLivraison($event),
$event instanceof EmailBounced => gererRebond($event),
default => log("Non géré : {$event->type}"),
};
Les webhooks permettent à votre application PHP de répondre instantanément quand un email est livré, a rebondi, est ouvert, ou cliqué. C'est essentiel pour construire des workflows pilotés par les événements comme mettre à jour un CRM quand un message est livré, alerter votre équipe support sur les rebonds, ou suivre les métriques d'engagement pour vos campagnes email.
Gestion des erreurs
Le SDK lance des exceptions typées pour que vous puissiez gérer chaque cas d'erreur précisément :
use Emailit\Exceptions\AuthenticationException;
use Emailit\Exceptions\RateLimitException;
use Emailit\Exceptions\UnprocessableEntityException;
use Emailit\Exceptions\ApiErrorException;
try {
$emailit->emails()->send([...]);
} catch (AuthenticationException $e) {
// Clé API invalide (401)
} catch (RateLimitException $e) {
// Trop de requêtes (429)
} catch (UnprocessableEntityException $e) {
// Validation échouée (422)
} catch (ApiErrorException $e) {
// Toute autre erreur API
echo $e->getHttpStatus();
}
Une gestion d'erreur appropriée garantit que votre application se dégrade gracieusement quand quelque chose va mal. Les exceptions de limite de taux, par exemple, peuvent être gérées avec une stratégie de nouvelle tentative, tandis que les erreurs d'authentification devraient déclencher une alerte pour que vous puissiez faire tourner votre clé API.
Au-delà des emails
Le SDK vous donne accès à l'API Emailit complète, pas seulement l'envoi. Vous pouvez gérer les domaines, clés API, audiences, abonnés, modèles, suppressions, contacts, et événements, tout depuis PHP :
$domain = $emailit->domains()->create(['name' => 'exemple.com']);
$contact = $emailit->contacts()->create(['email' => 'utilisateur@exemple.com']);
$templates = $emailit->templates()->list();
Cela fait du SDK PHP Emailit une boîte à outils complète d'infrastructure email. Au lieu d'utiliser des bibliothèques ou services séparés pour la gestion de domaine, les listes de contacts, et l'envoi d'emails, vous pouvez tout gérer via un seul client PHP cohérent.
Commencer
Installez le SDK et envoyez votre premier email en moins d'une minute :
composer require emailit/emailit-php
Consultez la documentation complète du SDK sur GitHub, ou rendez-vous à la Référence API pour les détails sur chaque endpoint.
Blog
Les dernières actualités et mises à jour, directement depuis Emailit.
Restez informé des derniers articles du Blog Emailit.


