# Configuration Email - Laravel ## 📧 Où configurer le serveur email La configuration email se fait dans le fichier **`api/.env`** avec les variables `MAIL_*`. ## 🔧 Variables de configuration Ajoutez ou modifiez ces lignes dans `api/.env` : ```env # Type de mailer (smtp, log, array, etc.) MAIL_MAILER=smtp # Serveur SMTP MAIL_HOST=smtp.mailtrap.io MAIL_PORT=2525 # Authentification SMTP MAIL_USERNAME=votre_username MAIL_PASSWORD=votre_password # Chiffrement (tls, ssl, ou null) MAIL_ENCRYPTION=tls # Adresse et nom de l'expéditeur MAIL_FROM_ADDRESS=noreply@sommet-francophone.org MAIL_FROM_NAME="${APP_NAME}" ``` ## 🎯 Options de configuration ### 1. Mode développement (logs) Pour tester sans envoyer de vrais emails, les emails seront écrits dans les logs : ```env MAIL_MAILER=log MAIL_HOST=null MAIL_PORT=null MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null MAIL_FROM_ADDRESS="noreply@example.com" MAIL_FROM_NAME="${APP_NAME}" ``` **Avantage** : Pas besoin de serveur SMTP, les emails sont visibles dans `storage/logs/laravel.log` ### 2. Mailtrap (développement/test) Service gratuit pour tester les emails en développement : 1. Créer un compte sur https://mailtrap.io 2. Créer une "Inbox" de test 3. Récupérer les identifiants SMTP ```env MAIL_MAILER=smtp MAIL_HOST=smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME=votre_username_mailtrap MAIL_PASSWORD=votre_password_mailtrap MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS="noreply@example.com" MAIL_FROM_NAME="${APP_NAME}" ``` **Avantage** : Capture tous les emails envoyés sans les envoyer vraiment ### 3. MailHog (local) Application locale pour tester les emails : 1. Installer MailHog : https://github.com/mailhog/MailHog 2. Démarrer MailHog (généralement sur port 1025) ```env MAIL_MAILER=smtp MAIL_HOST=127.0.0.1 MAIL_PORT=1025 MAIL_USERNAME=null MAIL_PASSWORD=null MAIL_ENCRYPTION=null MAIL_FROM_ADDRESS="noreply@example.com" MAIL_FROM_NAME="${APP_NAME}" ``` **Avantage** : Interface web locale pour voir les emails (http://127.0.0.1:8025) ### 4. Production (serveur SMTP réel) Configuration pour un serveur SMTP de production (ex: Bluehost, SendGrid, Mailgun, etc.) : #### Exemple avec Bluehost **Voir le guide complet** : `CONFIGURATION_EMAIL_BLUEHOST.md` Configuration de base : ```env MAIL_MAILER=smtp MAIL_HOST=smtp.bluehost.com MAIL_PORT=587 MAIL_USERNAME=votre_email@votre-domaine.com MAIL_PASSWORD=votre_mot_de_passe MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS="noreply@sommet-francophone.org" MAIL_FROM_NAME="Sommet Francophone" ``` **Note** : Utilisez l'email complet pour `MAIL_USERNAME` (ex: `contact@sommet-francophone.org`), pas juste le nom d'utilisateur. #### Exemple avec SendGrid ```env MAIL_MAILER=smtp MAIL_HOST=smtp.sendgrid.net MAIL_PORT=587 MAIL_USERNAME=apikey MAIL_PASSWORD=votre_api_key_sendgrid MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS="noreply@sommet-francophone.org" MAIL_FROM_NAME="Sommet Francophone" ``` #### Exemple avec Mailgun ```env MAIL_MAILER=smtp MAIL_HOST=smtp.mailgun.org MAIL_PORT=587 MAIL_USERNAME=votre_username_mailgun MAIL_PASSWORD=votre_password_mailgun MAIL_ENCRYPTION=tls MAIL_FROM_ADDRESS="noreply@sommet-francophone.org" MAIL_FROM_NAME="Sommet Francophone" ``` ## 📝 Fichier de configuration Laravel Laravel lit ces variables depuis `config/mail.php`. Si ce fichier n'existe pas, vous pouvez le publier : ```bash php artisan config:publish mail ``` Mais généralement, les variables `.env` suffisent. ## ✅ Après modification Après avoir modifié le `.env`, videz le cache de configuration : ```bash php artisan config:clear php artisan config:cache ``` ## 🧪 Tester la configuration ### Méthode 1 : Via Tinker ```bash php artisan tinker ``` Puis : ```php Mail::raw('Test email', function ($message) { $message->to('votre-email@example.com') ->subject('Test'); }); ``` ### Méthode 2 : Créer une route de test (temporaire) Dans `routes/api.php` (à supprimer après test) : ```php Route::get('/test-email', function () { try { Mail::raw('Test email', function ($message) { $message->to('votre-email@example.com') ->subject('Test Email'); }); return response()->json(['message' => 'Email envoyé avec succès']); } catch (\Exception $e) { return response()->json(['error' => $e->getMessage()], 500); } }); ``` Puis tester : `GET http://localhost:8000/api/test-email` ## 🔍 Vérifier les logs Si `MAIL_MAILER=log`, les emails sont dans : ```bash tail -f api/storage/logs/laravel.log ``` ## 📚 Documentation Laravel Pour plus de détails, voir la documentation officielle : - https://laravel.com/docs/11.x/mail#configuration --- **Document créé le** : 2026-01-XX