Dans ce blog, vous apprendrez à créer des e-mails Outlook (y compris MSG, EML, EMLX ou MHTML) et à envoyer des e-mails de manière synchrone ou asynchrone à l’aide de C# dans .NET ou .NET Core.

C# envoyer un e-mail Outlook

Le courrier électronique est devenu une source principale d’échange de messages et de partage de contenus tels que des documents, des images ou d’autres types de fichiers. La fréquence d’utilisation des e-mails se situe davantage dans les systèmes en ligne pour partager des notifications ou des documents importants avec plusieurs entités. Dans de tels cas, la préparation d’un modèle et l’envoi manuel d’e-mails à plusieurs parties prenantes peuvent être une tâche fastidieuse et fastidieuse.

Voici le besoin d’un service d’automatisation des e-mails à l’aide duquel vous pouvez créer et envoyer des e-mails de manière transparente. Donc, dans cet article, je vais vous apprendre à créer des e-mails aux formats Outlook populaires et à automatiser le processus d’envoi d’e-mails par programmation. Après avoir lu cet article, vous pourrez :

  • créer et enregistrer un e-mail en C#,
  • créer un email avec corps HTML en C#,
  • créer un email avec un encodage particulier en C#,
  • envoyer des emails de manière synchrone en utilisant SMTP en C#,
  • envoyer des emails de manière asynchrone en utilisant SMTP en C#,
  • et envoyer des e-mails en masse en C#.

API C# pour créer et envoyer des e-mails Outlook

Afin d’automatiser le processus de création et d’envoi d’e-mails, nous utiliserons Aspose.Email for .NET qui est une puissante API de manipulation et de traitement des e-mails. Il prend en charge les formats de messagerie populaires, y compris les messages MS Outlook tels que MSG, EML/EMLX, etc. Vous pouvez télécharger directement l’API DLL ou l’installer via NuGet Package Manager ou la console du gestionnaire de packages dans Visual Studio. .

PM> Install-Package Aspose.Email

Après avoir créé une application C# (Console, ASP.NET, etc.) et installé Aspose.Email for .NET, vous pouvez commencer à créer et envoyer les e-mails en C#.

Créer un e-mail Outlook en C#

Afin de créer ou de manipuler des messages électroniques Outlook, Aspose.Email fournit la classe MailMessage. Cette classe vous permet de définir toutes les propriétés d’un e-mail (Objet, À, De et Corps), d’ajouter des pièces jointes et d’enregistrer le message dans différents formats d’e-mail tels que EML, MSG, MHTML, etc. Voici les étapes pour créer un e-mail :

  • Créez une instance de la classe MailMessage.
  • Définissez les propriétés du message.
  • Enregistrez le message électronique à l’aide de la méthode MailMessage.Save().

L’exemple de code suivant montre comment créer et enregistrer un message électronique en C#.

// Créer une nouvelle instance de la classe MailMessage
MailMessage message = new MailMessage();

// Définir l'objet du message, le corps et les informations sur l'expéditeur
message.Subject = "New message created by Aspose.Email for .NET";
message.Body = "This is the body of the email.";
message.From = new MailAddress("from@domain.com", "Sender Name", false);

// Ajouter aux destinataires et aux destinataires CC
message.To.Add(new MailAddress("to1@domain.com", "Recipient 1", false));
message.CC.Add(new MailAddress("cc1@domain.com", "Recipient 3", false));

// Ajouter des pièces jointes
message.Attachments.Add(new Attachment("word.docx"));

// Enregistrer le message aux formats EML, EMLX, MSG et MHTML
message.Save("EmailMessage.eml", SaveOptions.DefaultEml);
message.Save("EmailMessage.emlx", SaveOptions.CreateSaveOptions(MailMessageSaveType.EmlxFormat));
message.Save("EmailMessage.msg", SaveOptions.DefaultMsgUnicode);
message.Save("EmailMessage.mhtml", SaveOptions.DefaultMhtml);

Créer un e-mail Outlook avec un corps HTML en C#

Les balises HTML sont utilisées pour rendre le corps de l’e-mail plus structuré, présentable et enrichi de différents éléments tels que des tableaux, des images, des listes, etc. Si vous souhaitez créer un e-mail avec un corps HTML, vous pouvez utiliser la propriété MailMessage.HtmlBody. L’exemple de code suivant montre comment créer un e-mail Outlook avec un corps HTML en C#.

// Créer une nouvelle instance de la classe MailMessage
MailMessage message = new MailMessage();

// Définir l'objet du message, le corps Html et les informations sur l'expéditeur
message.Subject = "New message created by Aspose.Email for .NET";
message.HtmlBody = "<b>This line is in bold.</b> <br/> <br/>" + "<font color=blue>This line is in blue color</font>";
message.From = new MailAddress("from@domain.com", "Sender Name", false);

// Ajouter aux destinataires et aux destinataires CC
message.To.Add(new MailAddress("to1@domain.com", "Recipient 1", false));
message.CC.Add(new MailAddress("cc1@domain.com", "Recipient 3", false));

// Enregistrer le message au format EML/EMLX/MSG/MHTML
message.Save("EmailMessage.eml", SaveOptions.DefaultEml);

Créer un e-mail Outlook avec un encodage particulier en C#

Vous pouvez également spécifier la norme de codage souhaitée pour indiquer au navigateur ou à l’application de messagerie comment interpréter les caractères du corps de l’e-mail. La propriété MailMessage.BodyEncoding est utilisée à cette fin. L’exemple de code suivant montre comment définir l’encodage du corps lors de la création d’un e-mail Outlook à l’aide de C#.

// Créer une nouvelle instance de la classe MailMessage
MailMessage message = new MailMessage();

// Définir l'objet du message, le corps Html, les informations sur l'expéditeur et le destinataire
message.Subject = "New message created by Aspose.Email for .NET";
message.HtmlBody = "<b>This line is in bold.</b> <br/> <br/>" + "<font color=blue>This line is in blue color</font>";
message.From = new MailAddress("from@domain.com", "Sender Name", false);
message.To.Add(new MailAddress("to1@domain.com", "Recipient 1", false));

// Spécifier l'encodage 
message.BodyEncoding = Encoding.ASCII;

// Enregistrer le message au format EML/EMLX/MSG/MHTML
message.Save("EmailMessage.msg", SaveOptions.DefaultMsgUnicode);

Envoyer des e-mails Outlook de manière synchrone ou asynchrone en C#

Maintenant, une fois que vous avez créé le message électronique, vous pouvez l’envoyer à ses destinataires de manière synchrone ou asynchrone. La classe SmtpClient vous permet d’envoyer des messages électroniques Outlook à l’aide de SMTP (Simple Mail Transfer Protocol). Voici les étapes pour envoyer un e-mail en C# en utilisant Aspose.Email for .NET.

  • Créez ou chargez un e-mail à l’aide de la classe MailMessage.
  • Créez une instance de la classe SmtpClient et définissez l’hôte, le nom d’utilisateur, le mot de passe et le numéro de port.
  • Envoyez des e-mails de manière synchrone ou asynchrone à l’aide de la méthode SmtpClient.Send ou SmtpClient.SendAsync respectivement.

Envoyer un e-mail Outlook de manière synchrone en C#

// Créez une instance MailMessage. Vous pouvez créer un nouveau message ou charger un fichier de message déjà créé (eml, msg, etc.)
MailMessage msg = MailMessage.Load("EmailMessage.msg");

// Créer une instance de la classe SmtpClient
SmtpClient client = new SmtpClient();

// Spécifiez votre hôte de messagerie, nom d'utilisateur, mot de passe, numéro de port et option de sécurité
client.Host = "mail.server.com";
client.Username = "username";
client.Password = "password";
client.Port = 587;
client.SecurityOptions = SecurityOptions.SSLExplicit;
try
{
	// Envoyez cet e-mail
	client.Send(msg); 
}
catch (Exception ex)
{
	Trace.WriteLine(ex.ToString());
}

Envoyer un e-mail Outlook de manière asynchrone en C#

// Créez une instance MailMessage. Vous pouvez créer un nouveau message ou charger un fichier de message déjà créé (eml, msg, etc.)
MailMessage msg = MailMessage.Load("EmailMessage.msg");

// Créer une instance de la classe SmtpClient
SmtpClient client = new SmtpClient();

// Spécifiez votre hôte de messagerie, nom d'utilisateur, mot de passe, numéro de port et option de sécurité
client.Host = "mail.server.com";
client.Username = "username";
client.Password = "password";
client.Port = 587;
client.SecurityOptions = SecurityOptions.SSLExplicit;

// Spécifiez votre hôte de messagerie, nom d'utilisateur, mot de passe, numéro de port et option de sécurité
client.Host = "mail.server.com";
client.Username = "username";
client.Password = "password";
client.Port = 587;
client.SecurityOptions = SecurityOptions.SSLExplicit; 

// Envoyer des messages
client.SendAsync(msg);

Console.WriteLine("Sending message..."); 

msg.Dispose(); 

Envoyer des e-mails en masse en C#

Vous pouvez également créer et envoyer des e-mails en masse. La classe MailMessageCollection est utilisée pour contenir la collection de messages électroniques que vous souhaitez envoyer. L’exemple de code suivant montre comment envoyer des e-mails en masse en C#.

// Créez SmtpClient et spécifiez le serveur, le port, le nom d'utilisateur et le mot de passe
SmtpClient client = new SmtpClient("mail.server.com", 25, "Username", "Password");

// Créez des instances de la classe MailMessage et spécifiez To, From, Subject et Message
MailMessage message1 = new MailMessage("msg1@from.com", "msg1@to.com", "Subject1", "message1, how are you?");
MailMessage message2 = new MailMessage("msg1@from.com", "msg2@to.com", "Subject2", "message2, how are you?");
MailMessage message3 = new MailMessage("msg1@from.com", "msg3@to.com", "Subject3", "message3, how are you?");

// Créez une instance de MailMessageCollection et ajoutez-y des e-mails
MailMessageCollection manyMsg = new MailMessageCollection();
manyMsg.Add(message1);
manyMsg.Add(message2);
manyMsg.Add(message3);
 
try
{  
	// Envoyer des messages
	client.Send(manyMsg); 
}
catch (Exception ex)
{
	Trace.WriteLine(ex.ToString());
}

Démos en direct

Conclusion

Dans cet article, vous avez appris à créer des e-mails Outlook en C#. De plus, vous avez vu comment envoyer des e-mails de manière synchrone ou asynchrone à partir d’applications .NET. Vous pouvez explorer la documentation de Aspose.Email for .NET pour en savoir plus sur l’API.

Voir également