Envoi d'Email en C# (.NET) : SmtpClient, MailKit et MimeKit
L'envoi d'emails est l'une des tâches de base dans les applications modernes. Dans l'écosystème C# (.NET), il existe à la fois des outils intégrés (la classe SmtpClient) et des bibliothèques tierces puissantes (MailKit et MimeKit). Dans ce guide, nous analyserons en détail les deux approches, examinerons des exemples de code, la configuration du serveur SMTP, la gestion des pièces jointes et des emails HTML.
1. SmtpClient intégré (System.Net.Mail)
La classe SmtpClient est disponible dans .NET Framework et .NET Core/5+ (avec des limitations). Elle est simple à utiliser, mais ne prend pas en charge les protocoles modernes (par exemple, OAuth2) et est considérée comme obsolète pour les nouveaux projets.
2. Installation et connexion de MailKit
MailKit est une bibliothèque multiplateforme pour travailler avec les emails. Elle est entièrement asynchrone, prend en charge SSL/TLS, OAuth2, S/MIME et d'autres fonctionnalités modernes. Installation via NuGet :
dotnet add package MailKitdotnet add package MimeKitOu via la console du gestionnaire de packages :
Install-Package MailKitInstall-Package MimeKit3. Exemple d'envoi d'un email simple avec SmtpClient
Exemple de base utilisant le SmtpClient intégré :
using System.Net;using System.Net.Mail;
public void SendSimpleEmail(){ var fromAddress = new MailAddress("sender@example.com", "Expéditeur"); var toAddress = new MailAddress("recipient@example.com", "Destinataire"); const string fromPassword = "your_password"; const string subject = "Sujet de l'email"; const string body = "Corps de l'email";
var smtp = new SmtpClient { Host = "smtp.example.com", Port = 587, EnableSsl = true, DeliveryMethod = SmtpDeliveryMethod.Network, UseDefaultCredentials = false, Credentials = new NetworkCredential(fromAddress.Address, fromPassword) };
using (var message = new MailMessage(fromAddress, toAddress) { Subject = subject, Body = body }) { smtp.Send(message); }}Important : Pour Gmail, Yandex et d'autres services, il est nécessaire d'utiliser un mot de passe d'application ou OAuth2.
4. Envoi d'Email avec MailKit (méthode recommandée)
MailKit fournit une API plus flexible et moderne. Exemple d'envoi d'un email texte simple :
using MailKit.Net.Smtp;using MailKit.Security;using MimeKit;using System.Threading.Tasks;
public async Task SendEmailWithMailKitAsync(){ var message = new MimeMessage(); message.From.Add(new MailboxAddress("Expéditeur", "sender@example.com")); message.To.Add(new MailboxAddress("Destinataire", "recipient@example.com")); message.Subject = "Sujet de l'email"; message.Body = new TextPart("plain") { Text = "Corps de l'email" };
using (var client = new SmtpClient()) { await client.ConnectAsync("smtp.example.com", 587, SecureSocketOptions.StartTls); await client.AuthenticateAsync("sender@example.com", "your_password"); await client.SendAsync(message); await client.DisconnectAsync(true); }}5. Envoi d'un email HTML avec pièces jointes
Création d'un email multipart (HTML + pièces jointes) avec MimeKit :
public async Task SendHtmlEmailWithAttachmentAsync(){ var message = new MimeMessage(); message.From.Add(new MailboxAddress("Expéditeur", "sender@example.com")); message.To.Add(new MailboxAddress("Destinataire", "recipient@example.com")); message.Subject = "Email HTML avec pièce jointe";
var bodyBuilder = new BodyBuilder { HtmlBody = @"<h1>Bonjour !</h1><p>Ceci est un email HTML avec une pièce jointe.</p>", TextBody = "Ceci est un text Aussi dans la bibliothèque
Génération de PDF en Swift : création de documents pour iOS et macOS
Travailler avec Excel en Rust : bibliothèques et exemples de code
Travailler avec les archives ZIP en C# (.NET) : guide complet
Bibliothèque standard JavaScript (Node.js) : aperçu complet
TypeStack/routing-controllers TypeScript : guide complet avec exemples