Créer des messages électroniques avec des options personnalisées en C#

Créer un nouveau message électronique

Pour créer un nouveau courriel, vous pouvez utiliser MailMessage classe. La classe MailMessage initialise également les propriétés du courriel créé telles que l’adresse électronique de l’expéditeur, les adresses électroniques des destinataires, l’objet du courriel et le contenu du corps du courriel au format HTML.

Considérez le code suivant, avec des étapes détaillées, pour créer un nouveau courriel et définir ses propriétés.

  1. Créez une nouvelle instance de la MailMessage classe.
  2. Définissez le From propriété pour l’adresse électronique de l’expéditeur.
  3. Définissez le À propriété pour une liste d’adresses électroniques des destinataires, séparées par des virgules.
  4. Définissez le Subject propriété pour l’objet du courriel.
  5. Définissez le HtmlBody propriété pour le contenu HTML du corps du courriel.
// Create a new instance of MailMessage class
var message = new MailMessage
{
    From = "from@domain.com",
    To = "to1@domain.com, to2@domain.com",
    Subject = "New message",
    HtmlBody = @"<!DOCTYPE html>
    <html>
     <head>
      <style>
       h3{font-family:Verdana, sans-serif;color:#000000;background-color:#ffffff;}
       p {font-family:Verdana, sans-serif;font-size:14px;font-style:normal;
         font-weight:normal;color:#000000;background-color:#ffffff;}
      </style>
     </head>
     <body>
       <h3>New message</h3>
       <p>This is a new message created by Aspose.Email.</p>
     </body>
    </html>"
};

Définir l’encodage de texte par défaut

Définir l’encodage de texte par défaut pour les propriétés suivantes :

  • De : Nom d'affichage
  • À : Nom d'affichage
  • Subject
  • Corps

Utilisez le MailMessage.PreferredTextEncoding propriété afin de garantir que tout le texte des propriétés ci‑dessus est correctement encodé dans le message électronique. L’extrait de code suivant montre comment utiliser un mot français comme nom d’affichage pour les adresses électroniques, l’objet et le corps.

Définir le corps du mail

Définir le corps en texte brut

Le corps d’un courriel peut être spécifié en utilisant le Corps propriété du MailMessage classe.

// Declare message as MailMessage instance
var eml = new MailMessage
{
    // Specify HtmlBody
    Body = "This is a plain text body"
};

Définir le corps HTML

Le corps d’un courriel peut également être spécifié en utilisant HtmlBody propriété du MailMessage classe.

// Declare message as MailMessage instance
var eml = new MailMessage
{
    // Specify HtmlBody
    HtmlBody = "<html><body>This is the HTML body</body></html>"
};

Définir le texte alternatif

Une vue alternative dans un fichier EML est une représentation supplémentaire du contenu du courriel qui peut être utilisée pour fournir un rendu différent du message. Par exemple, si vous envoyez un message en HTML, vous pouvez également fournir une version texte brut au cas où certains destinataires utiliseraient des lecteurs de courriel ne pouvant pas afficher le contenu HTML. À cette fin, utilisez le AlternateView classe. Cette classe possède deux propriétés, LinkedResources et BaseUri, qui sont utilisés pour résoudre les URL dans le contenu de l’e‑mail.

  • LinkedResources est une collection de LinkedResource objets. Lors du rendu, les URL du contenu du courriel sont d’abord comparées aux URL du Content Link de chaque LinkedResource objet dans le LinkedResources collection et résolues.
  • BaseUri est utilisé par le lecteur de courriel pour résoudre les URL relatives dans le corps, ainsi que pour résoudre les URL de liens de contenu relatifs, dans le LinkedResources collection.

Considérez le code suivant avec des étapes détaillées pour définir un texte alternatif.

  1. Créez une instance de MailMessage classe.
  2. Créer AlternateView pour afficher un message e‑mail en utilisant le contenu spécifié dans la chaîne.
  3. Ajoutez du texte alternatif en utilisant Add méthode de MailMessage.AlternateViews collection.
// Declare message as MailMessage instance
var eml = new MailMessage();

// Creates AlternateView to view an email message using the content specified in the //string
var alternate = AlternateView.CreateAlternateViewFromString("Alternate Text");

// Adding alternate text
 eml.AlternateViews.Add(alternate);

Spécifier l’encodage du corps du courriel

Aspose.Email utilise le BodyEncoding propriété du MailMessage classe pour spécifier l’encodage du corps de l’e‑mail. Par exemple :

eml.BodyEncoding = Encoding.UTF8;

Spécifier plusieurs destinataires

Il existe trois manières de spécifier les destinataires d’un message e‑mail : en utilisant les champs To, CC ou BCC.

  • Le champ To est le principal destinataire de votre message. Vous pouvez saisir une ou plusieurs adresses e‑mail dans ce champ, séparées par des virgules. Le champ To est obligatoire pour chaque message e‑mail.

  • Le champ CC signifie carbon copy. Il est utilisé pour envoyer une copie de votre message à d’autres personnes intéressées ou impliquées dans le sujet. Le champ CC est optionnel et peut également contenir plusieurs adresses e‑mail. Les destinataires du champ CC peuvent voir qui d’autre a reçu le message.

  • Le champ BCC signifie blind carbon copy. Il est similaire au champ CC, mais les destinataires du champ BCC sont cachés aux autres destinataires. Le champ BCC est utile lorsque vous souhaitez protéger la confidentialité de certains destinataires ou éviter d’encombrer leur boîte de réception avec des réponses. Le champ BCC est également optionnel et peut contenir plusieurs adresses e‑mail.

Considérez le code suivant, avec des étapes détaillées, pour spécifier plusieurs destinataires d’un message e‑mail.

Étapes du code :

  1. Créez une nouvelle instance de la MailMessage classe.
  2. Définissez le From propriété pour l’adresse électronique de l’expéditeur.
  3. Définissez le À propriété vers un tableau d’adresses e‑mail des destinataires principaux.
  4. Définissez le CC propriété vers un tableau d’adresses e‑mail des destinataires qui recevront une copie du courriel.
  5. Définissez le Bcc propriété vers un tableau d’adresses e‑mail des destinataires qui recevront une copie carbone invisible du courriel.

Exemple de code :

var eml = new MailMessage
{
    // Specify From address
    From = "sender@sender.com",
    //  Specify recipients’ mail addresses
    To = {"receiver1@receiver.com", "receiver2@receiver.com", "receiver3@receiver.com"},
    // Specify CC addresses
    CC = {"CC1@receiver.com", "CC2@receiver.com"},
    // Specify BCC addresses
    Bcc = {"Bcc1@receiver.com", "Bcc2@receiver.com"}
};

Ajouter des noms d’affichage aux adresses e‑mail

En plus d’une adresse e‑mail, un nom d’affichage peut être inclus pour identifier l’expéditeur ou le destinataire du courriel. Il peut s’agir du nom complet d’une personne, d’un surnom ou d’un autre identifiant.

Lorsqu’un message e‑mail est affiché dans un client de messagerie ou une interface webmail, le nom d’affichage apparaît généralement à côté de l’adresse e‑mail, facilitant ainsi l’identification de l’expéditeur ou du destinataire par l’utilisateur. Pour ajouter des noms d’affichage aux adresses e‑mail dans un message, considérez le code suivant avec des étapes détaillées :

  1. Chargez le message e‑mail depuis un fichier en utilisant le MailMessage.Load méthode.
  2. Définissez l’expéditeur du courriel en utilisant le From propriété de l’objet eml en créant un nouveau MailAddress objet contenant l’adresse e‑mail et un nom d’affichage de l’expéditeur.
  3. Ajoutez un destinataire au courriel en utilisant le To propriété de l’objet eml, le cas échéant ajoutez la liste CC (Carbon Copy) à l’aide du CC propriété, liste BCC (Blind Carbon Copy) à l’aide du Bcc propriété et appelez le Add méthode avec un nouveau MailAddress objet qui contient l’adresse e‑mail et un nom d’affichage du destinataire.

Exemple de code :

// Load eml from file
var eml = MailMessage.Load(Data.Email/"test.eml");

eml.From = new MailAddress("TimothyFairfield@from.com", "Timothy Fairfield");

// A To address with a friendly name can also be specified like this
eml.To.Add(new MailAddress("kyle@to.com", "Kyle Huang"));

// Specify Cc and Bcc email address along with a friendly name
eml.CC.Add(new MailAddress("guangzhou@cc.com", "Guangzhou Team"));
eml.Bcc.Add(new MailAddress("ahaq@bcc.com", "Ammad ulHaq "));

Définir des propriétés supplémentaires

Avec Aspose.Email, vous pouvez utiliser des propriétés supplémentaires de la MailMessage classe telle que :

  • Date propriété - définit la date et l’heure d’un e‑mail. Par défaut, la date correspond à la date réelle d’envoi du message, et l’heure correspond à l’heure d’envoi, comme affiché par Microsoft Outlook. Cependant, le véritable délai de livraison du courriel est ajouté par le serveur SMTP lui‑même dans l’en‑tête du message. Par exemple, ci‑dessous se trouve un en‑tête de courriel commun, où Date définit le champ Date.

    // For complete examples and data files, please go to https://github.com/aspose-email/Aspose.Email-for-.NET
    
    // Add by SMTP server in delivery emails
    Received: from ip-123.56.99.216.dsl-cust.ca.inter.net ([216.99.56.123]) by Aspose.secureserver.net with MailEnable ESMTP; Thu, 22 Feb 2007 13:58:57 -0700
    
    // Add by SMTP server in delivery emails
    Return-Path: <xyz@oikoscucine.it>
    
    // Add by SMTP server in delivery emails
    Received: from 195.120.225.20 (HELO mail.oikoscucine.it)
    by aspose.com with esmtp (:1CYY+<LA*- *1WK@)
    id Q8,/O/-.N83@7-9M
    for abc@aspose.com; Thu, 22 Feb 2007 20:58:51 +0300
    From: "XYZ" <xyz@oikoscucine.it>
    To: <abc@aspose.com>
    Subject: For ABC
    
    // Date will set the Date field, outlook will show this as
    Date: Thu, 22 Feb 2007 20:58:51 +0300
    Message-ID: <01c756c4$41b554d0$6c822ecf@dishonestyinsufferably>
    MIME-Version: 1.0
    Content-Type: multipart/alternative;
    boundary="----=_NextPart_000_0006_01C7569A.58DF4CD0"
    X-Mailer: Microsoft Office Outlook, Build 11.0.5510
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1106
    Thread-Index: Aca6Q:=ES0M(9-=(<.<1.<Q9@QE6CD==
    X-Read: 1
    
  • MailPriority énumération - spécifie les niveaux de priorité pour l’envoi d’un message e‑mail. Elle peut être basse, normale ou élevée. La priorité influence la vitesse de transmission et la remise.

  • MailSensitivity énumération - spécifie cinq niveaux de sensibilité.

  • XMailer- indique le logiciel qui a créé le message e‑mail.

L’extrait de code ci‑dessous illustre comment chacune des propriétés évoquées ci‑dessus peut être utilisée.

var eml = new MailMessage("sender@gmail.com", "receiver@gmail.com", "Some subject", "Some body text")
{
    Date = DateTime.Now,
    Priority = MailPriority.High,
    Sensitivity = MailSensitivity.Normal,
    Xmailer = "Aspose.Email"
};

Demander un accusé de lecture

Pour demander un accusé de lecture, utilisez Aspose.Email DeliveryNotificationOptions propriété du MailMessage classe. Cette propriété contient les valeurs de DeliveryNotificationOptions énumération.

Considérez l’exemple de code suivant :

// Create an Instance of MailMessage class
var eml = new MailMessage
{
    // Specify From, To, HtmlBody, DeliveryNotificationOptions field
    From = "sender@sender.com",
    To = "receiver@receiver.com",
    HtmlBody = "<html><body>This is the Html body</body></html>",
    DeliveryNotificationOptions = DeliveryNotificationOptions.OnSuccess
};

eml.Headers.Add("Return-Receipt-To", "sender@sender.com");
eml.Headers.Add("Disposition-Notification-To", "sender@sender.com");

// Create an instance of SmtpClient Class
var client = new SmtpClient
{
    // Specify your mailing host server, Username, Password and Port No
    Host = "smtp.server.com",
    Username = "Username",
    Password = "Password",
    Port = 25
};

try
{
    // Client.Send will send this message
    client.Send(eml);
    // Display ‘Message Sent’, only if message sent successfully
    Console.WriteLine(@"Message sent");
}
catch (Exception ex)
{
    System.Diagnostics.Trace.WriteLine(ex.ToString());
}

Note : Les demandes d’accusé de lecture ne sont pas toujours acceptées car :

  • Un client de messagerie peut ne pas implémenter cette fonctionnalité.
  • L’utilisateur final peut avoir désactivé cette fonctionnalité.
  • L’utilisateur final peut choisir de ne pas en envoyer un.

Personnaliser les en-têtes d’e-mail

Les en‑têtes d’e‑mail représentent une norme Internet et les RFC définissent les champs d’en‑tête inclus dans les messages e‑mail Internet. Un en‑tête d’e‑mail peut être spécifié à l’aide du MailMessage classe. Les types d’en‑tête courants sont définis dans le HeaderType classe. Il s’agit d’une classe scellée fonctionnant comme une énumération normale.

Normalement, un en-tête d’e‑mail contient ces champs :

  • To : Les adresses des destinataires peuvent être spécifiées dans le champ To. Les destinataires du champ To constituent le public principal du message. Il peut y avoir plusieurs adresses de destinataire.
  • From : Ce champ indique l’adresse e‑mail de l’expéditeur du message.
  • Cc : Permet aux utilisateurs d’envoyer un message en « Carbon Copy » ou « Courtesy Copy ». Le destinataire n’est pas censé répondre ou agir. Typiquement, le personnel de supervision est notifié avec le CC.
  • Bcc : Il signifie Blind Carbon Copy (copie carbone invisible), qui vous permet d’envoyer un e‑mail à un destinataire caché des autres destinataires.
  • ReplyTo : Ce champ d’en‑tête indique où l’expéditeur souhaite que les réponses soient envoyées.
  • Subject : Titre, en-tête, sujet. Souvent utilisé comme indicateur de fil de discussion pour les messages répondant ou commentant d’autres messages.
  • Date : Cet en-tête indique une date (et une heure). Normalement, il s’agit de la date à laquelle le message a été rédigé et envoyé.
  • XMailer : Informations sur le logiciel client de l’expéditeur. Exemple : X-Mailer : Aspose.Email XMailer est utilisé par les clients de messagerie. Différents clients de messagerie auront des valeurs XMailer différentes. La valeur XMailer de MS Outlook est Microsoft Office Outlook, Build 11.0.5510. Elle est ignorée par le destinataire ou le lecteur d’e-mails.

Normalement, un en‑tête d’e‑mail ressemble à ceci :

Reply-To: reply@reply.com
From: sender@sender.com
To: guangzhou@guangzhoo.com
Subject: test mail
Date: 6 Mar 2006 8:2:2 +0800
X-Mailer: Aspose.Email

Pour personnaliser un en-tête d’e-mail, suivez ces étapes de code :

  • Créez une instance de la MailMessage classe.
  • Spécifiez To, From, Cc, Bcc, ReplyTo, Subject, Date & XMailer à l’aide d’une instance de MailMessage.
  • Créez une instance de la MimeHeader classe et spécifiez l’en‑tête personnalisé.
  • Ajoutez l’en‑tête personnalisé au MailMessage instance.

L’extrait de code suivant montre comment définir les en‑têtes du courriel.

var eml = new MailMessage
{
    ReplyToList = "reply@reply.com",
    From = "sender@sender.com",
    To = "receiver1@receiver.com",
    CC = "receiver2@receiver.com",
    Bcc = "receiver3@receiver.com",
    Subject = "test mail",
    Date = new System.DateTime(2006, 3, 6),
    XMailer = "Aspose.Email"
};

Le fragment de code ci‑dessus produit un en‑tête d’e‑mail au format suivant :

Reply-To: reply@reply.com
From: sender@sender.com
To: receiver1@receiver.com
CC: receiver2@receiver.com
BCC: receiver3@receiver.com
Subject: test mail
Date: 6 Mar 2006 8:2:2 +0800
X-Mailer: Aspose.Email

Insérer un en‑tête à un emplacement spécifique

Le Add méthode du HeaderCollection classe insère un en‑tête à la fin de la collection. Cependant, il peut parfois être nécessaire d’insérer un en‑tête à un emplacement spécifique. Dans ce cas, le Add la méthode ne sera d’aucune aide. Pour y parvenir, utilisez le Insert méthode du HeaderCollection. Si la collection contient des en‑têtes portant le même nom, cet en‑tête sera inséré avant les autres en‑têtes du même nom. L’extrait de code suivant montre comment insérer un en‑tête à un emplacement spécifique.

eml.Headers.Insert("Received", "Value");

Ajouter des en‑têtes personnalisés

Un en‑tête de courriel peut être spécifié à l’aide du MailMessage classe. Pour spécifier un en‑tête personnalisé dans un courriel, consultez l’exemple de code suivant :

eml.Headers.Add("secret-header", "mystery");

Le fragment de code ci‑dessus produit un en‑tête d’e‑mail au format suivant :

secret-header: mystery

Créer des messages signés

L’API Aspose.Email offre la capacité de créer des messages signés à l’aide de certificats. Le AttachSignature méthode du MailMessage classe peut être utilisée pour signer un message afin de l’enregistrer ou même de l’envoyer en utilisant le SmtpClient.

Signer un message

Le fragment de code suivant vous montre comment signer un message.

Utilisation de l’option de certificat détaché

Les clients de messagerie web peuvent ne pas être capables d’afficher le contenu du corps d’un message signé. Cela peut être résolu en détachant le certificat avant de l’envoyer aux clients web. Le drapeau détaché dans la méthode surchargée de AttachSignature peut être utilisé pour atteindre cet objectif. Si défini sur true, le certificat est détaché de l’e‑mail et vice‑versa. Pour voir le corps d’un message signé dans les clients web, vous devez créer MailMessage avec signature détachée. Le fragment de code suivant vous montre comment utiliser l’option de certificat détaché.