Le système de Partner API envoie automatiquement des emails de notification aux citoyens lorsqu'une vérification d'identité est demandée par un service partenaire.
Condition : L'utilisateur a un compte mais account_level != "verified"
Email envoyé : OUI ✅
Destinataire : Email de l'utilisateur
Objectif : Informer qu'une vérification a été demandée et inviter à compléter la vérification
Contenu :
Condition : Aucun compte n'existe, création automatique
Email envoyé : OUI ✅
Destinataire : Email fourni dans le payload
Objectif : Informer de la création du compte et inviter à l'activer
Contenu :
Condition : account_level = "verified"
Email envoyé : NON ❌
Raison : L'utilisateur est déjà vérifié, pas besoin de notification
Fichier : app/Mail/PartnerVerificationRequestedMail.php
$userName // "Prénom Nom" de l'utilisateur
$partnerName // Nom du service partenaire (ex: "Banque XYZ")
$verificationDate // Date formatée "dd/mm/YYYY à HH:ii"
$accountLevel // "none" | "basic" | "verified"
$androidLink // Lien Google Play Store
$iosLink // Lien Apple App Store
🔍 Vérification d'identité en cours - SAGAPASS
Fichier : resources/views/emails/partner/verification-requested.blade.php
┌─────────────────────────────────────┐
│ 🔍 Vérification d'identité en cours │ Header
├─────────────────────────────────────┤
│ Bonjour [userName] │
│ │
│ Demande via [partnerName] │
│ le [verificationDate] │
├─────────────────────────────────────┤
│ 📋 Statut de votre compte │
│ │
│ [Message dynamique selon │ Body
│ accountLevel] │
│ │
│ - none: ⚠️ Compte incomplet │
│ - basic: ✅ Compte actif - Basic │
│ - verified: ✅ Compte vérifié │
├─────────────────────────────────────┤
│ [Boutons téléchargement app] │
├─────────────────────────────────────┤
│ 🔒 Sécurité │
│ │
│ - Service partenaire autorisé │
│ - Contact si non demandé │
│ - Protection des données │
├─────────────────────────────────────┤
│ 📞 Besoin d'aide ? │
│ [Bouton Contact Support] │ Footer
└─────────────────────────────────────┘
// CAS 2 : Compte existe mais pas vérifié
if ($user->email) {
try {
Mail::to($user->email)->send(
new PartnerVerificationRequestedMail($user, $app->name)
);
Log::info('Partner verify - Email envoyé (CAS 2)', [
'user_id' => $user->id,
'partner' => $app->name,
]);
} catch (\Exception $e) {
Log::error('Partner verify - Échec envoi email (CAS 2)', [
'user_id' => $user->id,
'error' => $e->getMessage(),
]);
}
}
if ($user->email) évite les erreurs si pas d'emailLes liens de téléchargement sont récupérés depuis la table system_settings :
'androidLink' => SystemSetting::get('app_store_android', 'https://play.google.com/...'),
'iosLink' => SystemSetting::get('app_store_ios', 'https://apps.apple.com/...'),
Avantages :
Gestion : Voir APP_STORES_MANAGEMENT.md
[info] Partner verify - Email envoyé (CAS 2)
{
"user_id": 123,
"partner": "Banque XYZ"
}
[error] Partner verify - Échec envoi email (CAS 3)
{
"user_id": 456,
"error": "Connection timeout"
}
php test-partner-email.php
Tests effectués :
.envMAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io # Exemple
MAIL_PORT=2525
MAIL_USERNAME=your_username
MAIL_PASSWORD=your_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=noreply@sagapass.ht
MAIL_FROM_NAME="SAGAPASS"
| Service | Usage | Prix | |---------|-------|------| | Mailtrap | Dev/Tests | Gratuit | | SendGrid | Production | 100 emails/jour gratuit | | Amazon SES | Production | $0.10 / 1000 emails | | Mailgun | Production | 5000 emails/mois gratuit |
Pour éviter les ralentissements API, utilisez les queues :
Mail::to($user->email)->queue(
new PartnerVerificationRequestedMail($user, $app->name)
);
QUEUE_CONNECTION=database # ou redis
php artisan queue:work
Avantages :
Fichier : app/Mail/PartnerVerificationRequestedMail.php
public function build()
{
return $this->subject('Votre nouveau subject')
->markdown('emails.partner.verification-requested')
->with([...]);
}
Fichier : resources/views/emails/partner/verification-requested.blade.php
Le template utilise les composants Markdown de Laravel :
@component('mail::message')
# Titre
Contenu...
@component('mail::button', ['url' => $url])
Texte du bouton
@endcomponent
@endcomponent
Personnaliser les couleurs : config/mail.php
MAIL_MAILER=log
Les emails sont écrits dans storage/logs/laravel.log
php artisan tinker
$user = User::find(1);
Mail::to($user->email)->send(
new \App\Mail\PartnerVerificationRequestedMail($user, 'Test Partner')
);
php artisan queue:work)Dernière mise à jour : 30 mars 2026
Version API : v1
Auteur : Équipe SAGAPASS