Architecture & engineering
The architecture cleanly separates three responsibilities: the business logic (the mail-merge core), the sending layer and the WPF UI. The sending layer rests on an IMailSender abstraction and a provider factory — adding or replacing a sending channel touches neither the core nor the UI. Everything is wired through dependency injection (Microsoft.Extensions).
Security is handled end to end: secrets — passwords, API keys, OAuth2 client secrets — are encrypted locally through Windows DPAPI, never stored in clear text. A signed licensing system (ECDSA digital signatures, tamper detection) and corporate proxy support (NTLM/Kerberos) allow deployment in constrained environments. Microsoft 365 integration builds on the Microsoft Graph SDK v6 and Azure.Identity (OAuth2 / Entra ID), in both delegated and app-only flows.
Quality is held by a suite of roughly 160 automated tests (xUnit) covering the merge engine, attachment resolution and .mame serialization. Data comes through ClosedXML (Excel) and CsvHelper (CSV), SMTP sending through MailKit / MimeKit, and the message preview renders via WebView2.
What this project demonstrates
MailMerge brings a broad engineering span together in a single product: software architecture and clean code, Windows desktop development, API integration (Microsoft Graph, Brevo), authentication and security (OAuth2 / Entra ID, encryption, digital signatures), COM interoperability with Outlook, internationalization, data processing (CSV/Excel) and automated testing.
Above all it illustrates a modernization skill: taking a legacy application (WinForms, .NET Framework 4.8), cleanly re-architecting it in .NET 10 / WPF / MVVM and industrializing it through to distribution, without ever breaking compatibility with users' existing files.
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