Aller au contenu
Étude de cas Application de bureau Windows · publipostage e-mail

MailMerge

Publipostage e-mail personnalisé pour Windows — de la feuille de calcul à l'envoi, avec une pièce jointe différente par destinataire.

.NET 10 réécriture (ex-.NET 4.8)
≈160 tests unitaires xUnit
4 fournisseurs d'envoi
100% compatible format .mame

Présentation

MailMerge transforme une liste de contacts — CSV, Excel (.xlsx/.xlsm), Google Sheets ou contacts Outlook — en e-mails individualisés : fusion de champs [Colonne], contenu conditionnel et une pièce jointe propre à chaque destinataire. L'envoi est multi-fournisseurs et entièrement paramétrable : Microsoft 365 (Graph), SMTP, Brevo ou l'Outlook installé sur le poste.

Le projet est la réécriture complète d'une ancienne application WinForms (.NET Framework 4.8) vers une architecture moderne .NET 10 / WPF en MVVM, tout en conservant une compatibilité binaire totale avec l'ancien format de projet (.mame) : les fichiers existants s'ouvrent et se réenregistrent sans perte. L'application couvre tout le cycle d'un publipostage — import des données, composition du message en texte enrichi (RTF↔HTML), résolution et vérification des pièces jointes, aperçu destinataire par destinataire, envoi supervisé (pause/reprise, cadence, quotas, relance des échecs) et journal exportable. Elle est livrée et en production.

Fonctionnalités clés

Fonctionnalités clés

01

Import multi-sources

Import des destinataires depuis CSV, Excel (.xlsx/.xlsm), Google Sheets et les contacts Outlook.

02

Moteur de fusion

Champs [Colonne] et contenu conditionnel [if/else] pour personnaliser chaque message à partir des données de la liste.

03

Pièces jointes par destinataire

Une pièce jointe propre à chaque destinataire, résolue par cinq méthodes, avec une grille de vérification avant l'envoi.

04

Envoi multi-fournisseurs

Microsoft 365 (Graph, délégué et application), SMTP (dont OAuth2 et authentification Windows intégrée), Brevo (API) ou l'Outlook du poste — au choix et entièrement paramétrable.

05

Envoi supervisé

Aperçu réel avant envoi, e-mail de test, puis campagne supervisée : pause/reprise, cadence, quotas quotidiens, relance des échecs et envoi programmé.

06

Composition & modèles

Éditeur de texte enrichi (RTF↔HTML), modèles de message réutilisables et gestion des désabonnements.

07

Compatibilité .mame

Compatibilité totale avec l'ancien format de projet .mame, en lecture comme en écriture (aller-retour sans perte).

08

Sécurité

Secrets chiffrés localement (Windows DPAPI), licence signée numériquement (ECDSA, détection d'altération) et prise en charge des proxys d'entreprise (NTLM/Kerberos).

09

Bilingue & thèmes

Interface bilingue FR/EN et thème clair/sombre.

Captures d'écran

Captures d'écran

Étape Données : import CSV / Excel, mapping des colonnes et liste des destinataires.
Étape Message : éditeur enrichi, insertion de champs et blocs conditionnels if/else.
Étape Pièces jointes : règle de résolution du fichier propre à chaque destinataire.
Étape Aperçu : rendu réel d'un destinataire avant envoi, avec sa pièce jointe.
Réglages : profils d'envoi Microsoft 365, SMTP, Brevo et Outlook.
Journal : historique du dernier envoi, statuts et export CSV.

Architecture & ingénierie

L'architecture découple nettement trois responsabilités : la logique métier (le noyau du publipostage), la couche d'envoi et l'interface WPF. La couche d'envoi repose sur une abstraction IMailSender et une fabrique de fournisseurs — ajouter ou remplacer un canal d'envoi ne touche ni au noyau ni à l'interface. Le tout est câblé par injection de dépendances (Microsoft.Extensions).

La sécurité est traitée de bout en bout : les secrets — mots de passe, clés d'API, secrets client OAuth2 — sont chiffrés localement via Windows DPAPI, jamais stockés en clair. Un système de licence signée (signatures numériques ECDSA, détection d'altération) et la prise en charge des proxys d'entreprise (NTLM/Kerberos) permettent un déploiement en environnement contraint. L'intégration Microsoft 365 s'appuie sur le SDK Microsoft Graph v6 et Azure.Identity (OAuth2 / Entra ID), en flux délégué comme en application.

La qualité est tenue par une suite d'environ 160 tests automatisés (xUnit) qui couvrent le moteur de fusion, la résolution des pièces jointes et la sérialisation du format .mame. Les données proviennent de ClosedXML (Excel) et CsvHelper (CSV), l'envoi SMTP de MailKit / MimeKit, et l'aperçu du message s'affiche via WebView2.

Ce que ce projet démontre

MailMerge réunit un large spectre d'ingénierie sur un même produit : architecture logicielle et clean code, développement d'applications de bureau Windows, intégration d'API (Microsoft Graph, Brevo), authentification et sécurité (OAuth2 / Entra ID, chiffrement, signature numérique), interopérabilité COM avec Outlook, internationalisation, traitement de données (CSV/Excel) et tests automatisés.

Il illustre surtout une compétence de modernisation : reprendre une application héritée (WinForms, .NET Framework 4.8), la réarchitecturer proprement en .NET 10 / WPF / MVVM et l'industrialiser jusqu'à la distribution, sans jamais rompre la compatibilité avec les fichiers des utilisateurs.

Technologies

C# 13 .NET 10 WPF XAML MVVM CommunityToolkit.Mvvm Microsoft.Extensions DI Microsoft Graph SDK v6 Azure.Identity MailKit / MimeKit API Brevo Outlook COM interop ClosedXML CsvHelper WebView2 DPAPI ECDSA xUnit

Collaborons

Un projet, une mission en vue ? Parlons-en.

Me contacter