Envoi d'Email en C# (.NET) avec SmtpClient et MailKit

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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 MimeKit


Ou via la console du gestionnaire de packages :



Install-Package MailKitInstall-Package MimeKit


3. 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

Recommendations