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 de simples messages texte, des emails HTML, ou gérer des emails en masse, FluentEmail offre un moyen facile d'implémenter des fonctionnalités d'envoi d'emails 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 courriels 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

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 explique comment configurer le client smtp à l'aide d'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 insiste sur le fait que ce serveur smtp localhost est destiné à des tests locaux. En production, vous vous connecteriez aux détails de votre serveur smtp réel, comme le point de terminaison SMTP de Gmail, en 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 si l'e-mail semble provenir de tim@timco.com, le serveur smtp l'authentifie tout de même sur la base des identifiants de connexion (comme le mot de passe de l'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 pour :

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

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 tels que le texte brut et le corps html, en fonction du contenu du modèle.

Gestion des destinataires multiples et des pièces jointes

Bien qu'il ne soit pas entièrement détaillé dans la démo de Tim, FluentEmail supporte facilement les destinataires multiples via les appels .To() et l'ajout d'un objet attachement pour les pièces jointes, similaire à la façon dont l'objet mailmessage ou la classe mailmessage dans l'ancienne version de .NET fonctionnait.

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);
}

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.

Résumé et réflexions finales

Vers 27:56, Tim conclut qu'avec FluentEmail, l'envoi d'emails en C# devient simple - de l'envoi de messages simples de type hello world à des emails html professionnels et dynamiques.

Il souligne également l'importance de garder les détails et les configurations de votre serveur smtp flexibles à l'aide d'un fichier de configuration comme appsettings.json, en particulier lorsque vous passez d'un développement local à des plateformes en nuage 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é moderne d'envoi de courriels en C# a évolué au-delà de la gestion de base des classes smtpclient et 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