Comment envoyé un mail avec CodeIgniter 4 : Le guide complet

Accueil PHP 8 Comment envoyé un mail avec CodeIgniter 4 : Le guide complet

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

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 :

  1. CodeIgniter 4 est bien installé sur votre serveur local ou distant.
  2. Vous avez configuré l’environnement (.env) correctement.
  3. 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 :

  1. Vérifiez votre configuration SMTP (hôte, port, mot de passe).
  2. Essayez avec un autre service SMTP (Gmail, Mailtrap…).
  3. Affichez le debugger :
print_r($email->printDebugger(['headers']));
  1. 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.

Formation web et informatique - Alban Guillier - Formateur

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 :

  1. Formulaire → stocke le contenu de l’email dans une table pending_emails
  2. Script planifié (EmailSender.php) → lit la table et envoie les mails
  3. 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

ÉtapeDétail
Étape 1Configurer .env avec vos infos SMTP
Étape 2Utiliser \Config\Services::email() pour générer l’email
Étape 3Choisir HTML ou texte selon le besoin
Étape 4Ajouter pièce jointe, template, destinataires multiples si besoin
Étape 5Afficher les erreurs via printDebugger()
Étape 6En production, privilégier un service d’envoi pro (Mailgun, Sendinblue…)
Envoyé un mail avec CodeIgniter

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 :

Live on Twitch
  • 🔥 Vendredi 25 Avril 2025 >19h00

    HTML & SémantiqueStructure d'une page HTML