Passer au contenu du pied de page
Iron Academy Logo
Apprendre le C#
Apprendre le C#

Autres catégories

Envoi d'email en C# avec FluentEmail

Tim Corey
30m 36s

L'envoi d'e-mails transactionnels en C# est un besoin courant dans de nombreuses solutions logicielles d'entreprise. Cependant, comme l'explique Tim Corey dans sa vidéo "Sending Email in C# using FluentEmail", ce processus n'a pas à être difficile. Que vous souhaitiez envoyer des messages texte simples, des e-mails HTML, ou gérer des e-mails en masse, FluentEmail offre un moyen facile d'implémenter la fonctionnalité d'envoi d'e-mails en utilisant des méthodes modernes et des protocoles SMTP.

Dans cet article, nous allons parcourir le processus en suivant la vidéo de Tim Corey, afin d'apprendre pleinement comment envoyer des emails en C# à l'aide de FluentEmail, configurer un serveur SMTP, construire des messages électroniques HTML dynamiques, et tester efficacement l'ensemble du processus d'envoi d'emails.

Introduction à FluentEmail

Tim commence par expliquer le contexte : l'envoi de courriels en C# reposait sur des outils plus anciens comme System.Net.Mail, mais avec .NET 5 et les versions ultérieures, une grande partie de ces outils a été dépréciée. C'est là que FluentEmail, une bibliothèque d'email moderne, entre en jeu pour combler les lacunes des messages simples et des communications plus sophistiquées comme les emails HTML et les images en ligne.

Tim précise que l'objectif est de créer facilement des courriels, d'utiliser des modèles et même de les tester sans se connecter aux serveurs de production.

Configuration de l'application console

À 1:04, Tim crée une nouvelle application console appelée EmailDemoApp. Il souligne la simplicité de commencer par static void Main(string[] args) ou simplement public static void Main lorsque vous n'avez pas besoin d'une interface utilisateur. Le point de départ épuré permet de se concentrer uniquement sur le processus d'envoi des courriels.

Send Emails In Csharp Using Fluentemail 1 related to Configuration de l'application console

Après avoir créé l'application, Tim définit le projet pour cibler .NET 5, une mise à niveau moderne du traditionnel .NET Framework, garantissant une meilleure compatibilité avec les protocoles modernes des clients de messagerie.

Installation de FluentEmail via la console du Package Manager

Ensuite, à 3:50, Tim utilise la console du Package Manager pour installer le paquet FluentEmail.Smtp, permettant l'utilisation d'un client SMTP pour envoyer des e-mails en C#. Parallèlement, Tim mentionne qu'il existe des intégrations supplémentaires telles que MailGun et SendGrid, mais que SMTP est l'option la plus universelle, fonctionnant avec la plupart des clients de messagerie et des configurations.

Send Emails In Csharp Using Fluentemail 2 related to Installation de FluentEmail via la console du Package Manager

Vous pouvez l'installer manuellement à l'aide de la commande suivante :

Install-Package FluentEmail.Smtp
Install-Package FluentEmail.Smtp
SHELL

Tim s'assure que nous ajoutons également la dépendance FluentEmail.Core, qui est nécessaire pour que la bibliothèque fonctionne.

Configuration du client et du serveur SMTP

À 6:10, Tim discute de la configuration du client SMTP en utilisant une nouvelle configuration SmtpClient :

var sender = new SmtpSender(() => new SmtpClient("localhost")
{
    EnableSsl = false,
    DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory,
    PickupDirectoryLocation = @"C:\Demos"
});
var sender = new SmtpSender(() => new SmtpClient("localhost")
{
    EnableSsl = false,
    DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory,
    PickupDirectoryLocation = @"C:\Demos"
});

Tim souligne que ce serveur SMTP localhost est pour les tests locaux. En production, vous vous connecteriez aux détails de votre serveur SMTP réel tel que le point d'accès SMTP de Gmail, utilisant éventuellement un mot de passe d'application pour la sécurité.

Il souligne que les paramètres sensibles devraient être déplacés dans un fichier de configuration comme appsettings.json pour plus de sécurité et de flexibilité.

Envoi d'un simple message électronique

A 11:59, Tim passe à l'envoi d'un message simple en utilisant l'API de messagerie de FluentEmail. Il explique qu'un objet var email est créé avec l'exemple de code suivant :

var email = await Email
    .From("tim@timco.com")
    .To("test@test.com", "Sue")
    .Subject("Thanks")
    .Body("Thanks for buying our product.")
    .SendAsync();
var email = await Email
    .From("tim@timco.com")
    .To("test@test.com", "Sue")
    .Subject("Thanks")
    .Body("Thanks for buying our product.")
    .SendAsync();

De cette façon, vous spécifiez clairement la chaîne de l'objet, la chaîne de l'e-mail et le corps du message en utilisant le chaînage de méthodes. Le message var (courriel) contient le résultat, ce qui permet de vérifier les erreurs.

Tim souligne que bien que l'e-mail semble provenir de tim@timco.com, le serveur SMTP l'authentifiera toujours sur la base des informations de connexion (comme un mot de passe d'application Gmail).

Visualisation du courrier électronique à l'aide de l'annuaire local

Une fois le message électronique envoyé, Tim montre comment il apparaît sous la forme d'un fichier .eml dans le dossier local. Bien que vous puissiez l'ouvrir avec Outlook ou Notepad, pour les messages électroniques existants ou les tests en masse, ce n'est pas la solution la plus conviviale.

Send Emails In Csharp Using Fluentemail 3 related to Visualisation du courrier électronique à l'aide de l'annuaire local

Utiliser Papercut SMTP pour faciliter les tests

À 17:03, Tim passe de l'enregistrement dans un répertoire à l'utilisation de Papercut SMTP, un faux serveur SMTP léger.

Il modifie les paramètres du client SMTP à :

DeliveryMethod = SmtpDeliveryMethod.Network;
Port = 25;
DeliveryMethod = SmtpDeliveryMethod.Network;
Port = 25;

Avec Papercut, chaque e-mail de test apparaît immédiatement dans une interface graphique. La traduction doit rester professionnelle et préserver l'exactitude technique tout en expliquant les caractéristiques et les avantages de ces outils de développement.

Send Emails In Csharp Using Fluentemail 4 related to Utiliser Papercut SMTP pour faciliter les tests

Construction d'un e-mail HTML avec Razor Templates

À 19:12, Tim fait remarquer qu'un texte statique en clair ne suffit pas dans de nombreux cas réels. Pour des messages HTML plus dynamiques et plus riches, il installe le package FluentEmail.Razor :

Install-Package FluentEmail.Razor
Install-Package FluentEmail.Razor
SHELL

Il met à jour les paramètres du projet avec :

<PreserveCompilationContext>true</PreserveCompilationContext>
<PreserveCompilationContext>true</PreserveCompilationContext>

pour s'assurer que les modèles Razor se compilent correctement.

Création et utilisation d'un modèle d'e-mail Razor

À l'aide d'un constructeur de chaînes (var builder) et de la syntaxe Razor, Tim crée un modèle d'e-mail dynamique :

var builder = new StringBuilder();
builder.AppendLine("Dear @Model.FirstName,");
builder.AppendLine("<p>Thanks for purchasing @Model.ProductName.</p>");
builder.AppendLine("The TimCo Team");
var builder = new StringBuilder();
builder.AppendLine("Dear @Model.FirstName,");
builder.AppendLine("<p>Thanks for purchasing @Model.ProductName.</p>");
builder.AppendLine("The TimCo Team");

Il attache ensuite ce modèle à la requête var à l'aide du code suivant :

await Email
    .UsingTemplate(builder.ToString(), new { FirstName = "Tim", ProductName = "Bacon Wrapped Bacon" })
    .SendAsync();
await Email
    .UsingTemplate(builder.ToString(), new { FirstName = "Tim", ProductName = "Bacon Wrapped Bacon" })
    .SendAsync();

Cette technique prend en charge différents formats comme le texte brut et le corps HTML, selon le contenu du modèle.

Gestion des destinataires multiples et des pièces jointes

Bien que pas entièrement détaillé dans la démonstration de Tim, FluentEmail prend facilement en charge plusieurs destinataires via des appels .To() et l'ajout d'un objet pièce jointe pour les pièces jointes, similaire à la manière dont l'objet MailMessage ou la classe MailMessage dans les anciennes versions de .NET fonctionnaient.

Vous pouvez créer des pièces jointes à l'aide d'une nouvelle chaîne de chemin de fichier ou d'un identifiant de contenu pour les images en ligne.

Gestion des exceptions dans le processus d'envoi de courriels

Tim indique qu'il convient de traiter les erreurs avec élégance. Par exemple:

try
{
    var result = await Email.SendAsync();
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}
try
{
    var result = await Email.SendAsync();
}
catch (Exception ex)
{
    Console.WriteLine(ex.Message);
}

Ce qui capture toutes les défaillances liées au SMTP ou au réseau pendant le processus d'envoi d'e-mails, notamment si des problèmes de protocole SMTP surviennent.

Résumé et réflexions finales

Vers 27:56, Tim conclut qu'avec FluentEmail, envoyer des e-mails en C# devient simple — de l'envoi de messages simples de type hello world à des e-mails HTML professionnels et dynamiques.

Il souligne également l'importance de garder les détails et les configurations de votre serveur SMTP flexibles en utilisant un fichier de configuration comme appsettings.json, surtout lors du passage entre le développement local et les plateformes cloud comme Azure Portal.

Que vous souhaitiez envoyer des mails individuellement ou en masse, FluentEmail combiné à Papercut SMTP offre un flux de travail moderne et efficace, compatible avec de nombreux langages de programmation et écosystèmes.

Pensées finales

Grâce à l'excellente vidéo de Tim Corey, il est clair que la fonctionnalité d'envoi d'e-mails modernes en C# a évolué au-delà de la gestion de la classe SmtpClient basique et de la classe MailMessage. Avec l'aide de FluentEmail, les développeurs peuvent rapidement créer un nouveau projet, configurer une connexion SMTP, construire un corps d'e-mail dynamique et tester le tout localement avant de le déployer en production.

Hero Worlddot related to Envoi d'email en C# avec FluentEmail
Hero Affiliate related to Envoi d'email en C# avec FluentEmail

Gagnez plus en partageant ce que vous aimez

Vous créez du contenu pour les développeurs travaillant avec .NET, C#, Java, Python ou Node.js ? Transformez votre expertise en revenu supplémentaire !

Équipe de soutien Iron

Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.
Chat
Email
Appelez-moi