Envoyé un mail avec CodeIgniter 4 est une tâche incontournable dans le développement d’applications web modernes. Que ce soit pour la confirmation d’inscription, la réinitialisation de mot de passe, l’envoi de newsletters ou de messages de contact, envoyé un mail avec CodeIgniter est une fonctionnalité indispensable.
Dans ce tutoriel complet, nous allons découvrir pas à pas comment envoyé un mail avec CodeIgniter 4, étape par étape.
Ce tutoriel complet vous montrera :
- Comment configurer l’envoi d’emails dans CodeIgniter 4
- Comment utiliser les fonctions natives du framework
- Des exemples concrets d’utilisation
- Les bonnes pratiques pour éviter les erreurs
- Prérequis pour envoyé un mail avec CodeIgniter
- Configuration de l’envoi de mail dans CodeIgniter 4
- Créer une méthode pour envoyé un mail avec CodeIgniter
- Exemple concret : Formulaire de contact avec email automatique
- Débogage : que faire si l’email ne part pas ?
- Ajouter des pièces jointes lors de l’envoi d’un mail
- Utiliser un template HTML pour les mails
- Envoyer un mail à plusieurs destinataires (cc et bcc)
- Utiliser les logs pour vérifier les envois
- Envoyer un mail avec CodeIgniter via un service externe (Sendinblue, Mailgun, etc.)
- Planifier l’envoi d’email avec des tâches automatiques
Pourquoi envoyé un mail avec CodeIgniter est essentiel ?
Quand vous développez une application web, vous aurez toujours besoin d’une méthode fiable pour communiquer avec vos utilisateurs. Envoyé un mail avec CodeIgniter permet par exemple :
- d’envoyer une confirmation lors d’une inscription,
- de fournir un lien de réinitialisation de mot de passe,
- d’informer d’un changement de statut de commande,
- de recevoir un message via un formulaire de contact.
Grâce au composant Email intégré, envoyé un mail avec CodeIgniter devient simple, rapide et efficace, sans dépendre de bibliothèques externes compliquées.
Prérequis pour envoyé un mail avec CodeIgniter
Avant de commencer, assurez-vous que :
- CodeIgniter 4 est bien installé sur votre serveur local ou distant.
- Vous avez configuré l’environnement (
.env
) correctement. - Vous avez accès à un service SMTP (comme Gmail, Mailtrap, Sendinblue ou celui de votre hébergeur).
Configuration de l’envoi de mail dans CodeIgniter 4
Activer le mode développement
Pour faciliter le débogage, activez le mode développement dans votre fichier .env
:
CI_ENVIRONMENT = development
Configurer les paramètres SMTP
Dans le même fichier .env
, ajoutez vos informations SMTP :
mail.fromEmail = support@votresite.com
mail.fromName = MonApplication
mail.protocol = smtp
mail.SMTPHost = smtp.votresite.com
mail.SMTPUser = support@votresite.com
mail.SMTPPass = votremotdepasse
mail.SMTPPort = 587
mail.SMTPCrypto = tls
mail.mailType = html
mail.charset = UTF-8
✅ Astuce : Pour tester sans envoyer de vrai email, vous pouvez utiliser Mailtrap.io.
Créer une méthode pour envoyé un mail avec CodeIgniter
CodeIgniter 4 utilise une classe native Email
disponible via le service \CodeIgniter\Email\Email
.
Exemple simple de méthode d’envoi d’email :
namespace App\Controllers;
use CodeIgniter\Controller;
class Contact extends Controller
{
public function send()
{
$email = \Config\Services::email();
$email->setTo('destinataire@example.com');
$email->setFrom('support@votresite.com', 'Mon Application');
$email->setSubject('Nouveau message de contact');
$email->setMessage('<p>Bonjour, ceci est un test d\'envoi d\'email avec CodeIgniter 4.</p>');
if ($email->send()) {
echo 'Email envoyé avec succès.';
} else {
$data = $email->printDebugger(['headers']);
print_r($data);
}
}
}
Exemple concret : Formulaire de contact avec email automatique
Créons un petit formulaire dans une vue contact.php
:
<form action="/contact/send" method="post">
<label for="nom">Votre nom :</label>
<input type="text" name="nom" required>
<label for="email">Votre email :</label>
<input type="email" name="email" required>
<label for="message">Message :</label>
<textarea name="message" required></textarea>
<button type="submit">Envoyer</button>
</form>
Et dans votre contrôleur Contact
, récupérons les données :
public function send()
{
$nom = $this->request->getPost('nom');
$emailUser = $this->request->getPost('email');
$messageUser = $this->request->getPost('message');
$email = \Config\Services::email();
$email->setTo('admin@votresite.com');
$email->setFrom($emailUser, $nom);
$email->setSubject('Nouveau message de ' . $nom);
$email->setMessage($messageUser);
if ($email->send()) {
return redirect()->to('/contact')->with('message', 'Email envoyé avec succès.');
} else {
return redirect()->to('/contact')->with('error', 'Erreur lors de l’envoi de l’email.');
}
}
Bonnes pratiques pour bien envoyé un mail avec CodeIgniter
- Toujours valider et nettoyer les entrées utilisateur avant l’envoi.
- Utiliser des modèles HTML pour vos emails avec un en-tête et un pied de page cohérents.
- Prévoir une version texte simple pour les clients mail qui ne lisent pas le HTML.
- Ajouter des en-têtes DKIM/SPF dans votre domaine pour éviter le spam.
- En production, surveiller le taux de délivrabilité de vos messages.
Débogage : que faire si l’email ne part pas ?
Si malgré tout vous ne parvenez pas à envoyé un mail avec CodeIgniter, voici quelques vérifications à faire :
- Vérifiez votre configuration SMTP (hôte, port, mot de passe).
- Essayez avec un autre service SMTP (Gmail, Mailtrap…).
- Affichez le debugger :
print_r($email->printDebugger(['headers']));
- Vérifiez que votre serveur accepte les connexions sortantes sur le port SMTP utilisé (souvent 587 ou 465).
Cas d’utilisation concrets : où envoyé un mail avec CodeIgniter ?
Voici des exemples concrets d’endroits où vous pourriez envoyé un mail avec CodeIgniter :
- Lors d’une inscription, envoyer un email de bienvenue
- Lors d’un achat, envoyer une confirmation de commande
- Après un contact, envoyer une notification à l’administrateur
- Lors d’un oubli de mot de passe, envoyer un lien sécurisé
- Pour un blog, notifier les abonnés d’un nouvel article
Maintenant que nous avons vu les bases pour bien envoyé un mail avec CodeIgniter : configuration SMTP, formulaire de contact, gestion d’erreurs. Dans cette deuxième partie, nous allons approfondir avec des cas plus avancés.

Des formations informatique pour tous !
Débutant ou curieux ? Apprenez le développement web, le référencement, le webmarketing, la bureautique, à maîtriser vos appareils Apple et bien plus encore…
Formateur indépendant, professionnel du web depuis 2006, je vous accompagne pas à pas et en cours particulier, que vous soyez débutant ou que vous souhaitiez progresser. En visio, à votre rythme, et toujours avec pédagogie.
Découvrez mes formations Qui suis-je ?Ajouter des pièces jointes lors de l’envoi d’un mail
Parfois, vous devez envoyé un mail avec CodeIgniter contenant un fichier (facture PDF, CV, image…). Voici comment procéder :
Exemple d’envoi avec une pièce jointe :
$email = \Config\Services::email();
$email->setTo('client@example.com');
$email->setFrom('admin@votresite.com', 'Support');
$email->setSubject('Votre facture');
$email->setMessage('Veuillez trouver ci-joint votre facture en PDF.');
// Joindre un fichier local
$email->attach(WRITEPATH . 'factures/facture_1234.pdf');
if ($email->send()) {
echo 'Mail avec pièce jointe envoyé.';
} else {
print_r($email->printDebugger(['headers']));
}
🔐 Attention : ne jamais permettre à l’utilisateur d’envoyer un fichier sans contrôle (vérification de type MIME, taille max, etc.).
Utiliser un template HTML pour les mails
Pour un rendu professionnel, il est conseillé de envoyé un mail avec CodeIgniter en HTML. Cela permet d’ajouter une structure, un logo, des couleurs, etc.
Exemple de template simple (dans app/Views/emails/bienvenue.php
) :
<html>
<head>
<style>
body { font-family: Arial; background: #f8f8f8; }
.content { background: #fff; padding: 20px; border-radius: 8px; }
</style>
</head>
<body>
<div class="content">
<h2>Bienvenue <?= esc($nom) ?> !</h2>
<p>Merci pour votre inscription sur notre site.</p>
</div>
</body>
</html>
Dans votre contrôleur :
$nom = 'Alban';
$message = view('emails/bienvenue', ['nom' => $nom]);
$email = \Config\Services::email();
$email->setTo('alban@example.com');
$email->setFrom('no-reply@votresite.com', 'Equipe Crea-Troyes');
$email->setSubject('Bienvenue à bord !');
$email->setMessage($message);
$email->setMailType('html');
$email->send();
Envoyer à plusieurs destinataires (cc et bcc)
Lorsque vous devez envoyer un mail à plusieurs personnes (ex : équipe), CodeIgniter gère très bien cela.
$email = \Config\Services::email();
$email->setTo(['client1@example.com', 'client2@example.com']);
$email->setCC('manager@example.com');
$email->setBCC(['admin1@example.com', 'admin2@example.com']);
$email->setSubject('Notification multiple');
$email->setMessage('Ceci est un envoi groupé.');
$email->send();
Utiliser les logs pour vérifier les envois
CodeIgniter vous permet de loguer chaque tentative d’envoi de mail. Activez le logging dans .env
:
mail.log = true
Les logs apparaîtront dans writable/logs
— utile pour savoir si votre tentative d’envoyé un mail avec CodeIgniter a échoué.
Envoyer un mail avec CodeIgniter via un service externe (Sendinblue, Mailgun, etc.)
Si vous souhaitez utiliser un service pro d’envoi d’emails (et améliorer la délivrabilité), configurez votre .env
en conséquence.
Exemple avec Mailgun :
mail.protocol = smtp
mail.SMTPHost = smtp.mailgun.org
mail.SMTPUser = postmaster@votredomaine.mailgun.org
mail.SMTPPass = motdepasseAPI
mail.SMTPPort = 587
mail.SMTPCrypto = tls
Et vous utilisez ensuite la classe Email
comme d’habitude.
Planifier l’envoi d’email avec des tâches automatiques
Pour ne pas bloquer l’utilisateur lors de l’envoi (cas d’une newsletter par exemple), vous pouvez stocker les emails dans une table, puis créer un cron
ou une task
qui les envoie toutes les X minutes.
Exemple simple de logique :
- Formulaire → stocke le contenu de l’email dans une table
pending_emails
- Script planifié (
EmailSender.php
) → lit la table et envoie les mails - Supprime ou archive les mails envoyés
C’est une excellente méthode pour optimiser les performances et ne pas ralentir l’application.
Tout ce qu’il faut retenir pour envoyé un mail avec CodeIgniter
Étape | Détail |
---|---|
Étape 1 | Configurer .env avec vos infos SMTP |
Étape 2 | Utiliser \Config\Services::email() pour générer l’email |
Étape 3 | Choisir HTML ou texte selon le besoin |
Étape 4 | Ajouter pièce jointe, template, destinataires multiples si besoin |
Étape 5 | Afficher les erreurs via printDebugger() |
Étape 6 | En production, privilégier un service d’envoi pro (Mailgun, Sendinblue…) |

Conclusion
Envoyé un mail avec CodeIgniter est à la fois simple et puissant. Grâce aux fonctionnalités natives du framework, vous pouvez très rapidement intégrer l’envoi de mails dans votre application, qu’il s’agisse de simples notifications ou d’outils de communication plus complexes.
Que vous souhaitiez envoyé un mail avec CodeIgniter pour un formulaire de contact, une alerte, ou une newsletter, vous disposez désormais de toutes les clés.
Allez plus loin avec CodeIgniter :
- Tout savoir sur les routes
- Ajouter un système de Layout (header et footer)
- Connexion à une base de données
- Connexion et accès sécurisé
- Mise en place d’une pagination
- 🔥 Vendredi 25 Avril 2025 >19h00
HTML & SémantiqueStructure d'une page HTML