Cette documentation est archivée et n’est pas conservée.

SmtpClient, classe

Remarque : cette classe est nouvelle dans le .NET Framework version 2.0.

Permet aux applications d'envoyer du courrier électronique à l'aide du protocole SMTP (Simple Mail Transfer Protocol).

Espace de noms : System.Net.Mail
Assembly : System (dans system.dll)

public class SmtpClient
public class SmtpClient
public class SmtpClient

La classe SmtpClient est utilisée pour envoyer du courrier électronique à un serveur SMTP. Les classes répertoriées dans le tableau suivant sont utilisées pour construire des messages électroniques qui peuvent être envoyés à l'aide de SmtpClient.

Classe

Description

Attachment

Représente des fichiers joints. Cette classe vous permet de joindre des fichiers, des flux de données ou du texte à un message électronique.

MailAddress

Représente l'adresse de messagerie de l'expéditeur et du destinataire.

MailMessage

Représente un message électronique.

Pour construire et envoyer un message électronique à l'aide de SmtpClient, vous devez spécifier les informations suivantes :

  • Le serveur hôte SMTP que vous utilisez pour envoyer du courrier électronique. Consultez Host et Portproperties.

  • Des informations d'identification pour l'authentification, si elles sont requises par le serveur SMTP. Voir la propriété Credentials.

  • L'adresse de messagerie de l'expéditeur. Consultez les méthodes Send et SendAsync qui prennent un paramètre from. Voir également la propriété MailMessage.From.

  • Les adresses de messagerie des destinataires. Consultez les méthodes Send et SendAsync qui prennent un paramètre recipient. Voir également la propriété MailMessage.To.

  • Le contenu du message. Consultez les méthodes Send et SendAsync qui prennent un paramètre body. Voir également la propriété MailMessage.Body.

Pour attacher une pièce jointe à un message électronique, créez d'abord la pièce jointe à l'aide de la classe Attachment, puis ajoutez-la au message à l'aide de la propriété MailMessage.Attachments. Selon le lecteur de messagerie électronique utilisé par les destinataires et le type de fichier de la pièce jointe, certains destinataires peuvent ne pas être capables de lire la pièce jointe. Pour les clients qui ne peuvent pas afficher la pièce jointe dans sa forme d'origine, vous pouvez spécifier d'autres affichages à l'aide de la propriété MailMessage.AlternateViews.

Vous pouvez utiliser les fichiers de configuration machine ou de l'application pour spécifier les valeurs d'hôte, de port et d'informations d'identification par défaut pour tous les objets SmtpClient. Pour plus d'informations, consultez mailSettings, élément (paramètres réseau).

Pour envoyer le message électronique et bloquer l'exécution en attendant qu'il soit transmis au serveur SMTP, utilisez l'une des méthodes Send synchrones. Pour autoriser le thread principal de votre programme à continuer à s'exécuter pendant que la messagerie électronique est transmise, utilisez l'une des méthodes SendAsync asynchrones. L'événement SendCompleted est déclenché lorsqu'une opération SendAsync se termine. Pour recevoir cet événement, vous devez ajouter un délégué SendCompletedEventHandler à SendCompleted. Le délégué SendCompletedEventHandler doit faire référence à une méthode de rappel qui gère la notification d'événements SendCompleted. Pour annuler une transmission de message électronique asynchrone, utilisez la méthode SendAsyncCancel.

RemarqueRemarque

S'il y a une transmission de message électronique en cours et que vous rappelez SendAsync ou Send, vous recevez InvalidOperationException.

Le protocole SMTP est défini dans la RFC 2821, disponible à l'adresse http://www.ietf.org.

RubriqueEmplacement
Comment : installer et configurer des serveurs virtuels SMTP dans IISConfiguration d'applications Web ASP.NET
Comment : installer et configurer des serveurs virtuels SMTP dans IIS 6.0Génération d'applications Web ASP.NET dans Visual Studio
Comment : installer et configurer des serveurs virtuels SMTP dans IIS 6.0Génération d'applications Web ASP.NET dans Visual Studio

L'exemple de code suivant illustre l'envoi d'un message électronique de façon asynchrone.


using System;
using System.Net;
using System.Net.Mail;
using System.Net.Mime;
using System.Threading;
using System.ComponentModel;
namespace Examples.SmptExamples.Async
{
    public class SimpleAsynchronousExample
    {
        static bool mailSent = false;
        public static void SendCompletedCallback(object sender, AsyncCompletedEventArgs e)
        {
            // Get the unique identifier for this asynchronous operation.
             String token = (string) e.UserState;
           
            if (e.Cancelled)
            {
                 Console.WriteLine("[{0}] Send canceled.", token);
            }
            if (e.Error != null)
            {
                 Console.WriteLine("[{0}] {1}", token, e.Error.ToString());
            } else
            {
                Console.WriteLine("Message sent.");
            }
            mailSent = true;
        }
        public static void Main(string[] args)
        {
            // Command line argument must the the SMTP host.
            SmtpClient client = new SmtpClient(args[0]);
            // Specify the e-mail sender.
            // Create a mailing address that includes a UTF8 character
            // in the display name.
            MailAddress from = new MailAddress("jane@contoso.com", 
               "Jane " + (char)0xD8+ " Clayton", 
            System.Text.Encoding.UTF8);
            // Set destinations for the e-mail message.
            MailAddress to = new MailAddress("ben@contoso.com");
            // Specify the message content.
            MailMessage message = new MailMessage(from, to);
            message.Body = "This is a test e-mail message sent by an application. ";
            // Include some non-ASCII characters in body and subject.
            string someArrows = new string(new char[] {'\u2190', '\u2191', '\u2192', '\u2193'});
            message.Body += Environment.NewLine + someArrows;
            message.BodyEncoding =  System.Text.Encoding.UTF8;
            message.Subject = "test message 1" + someArrows;
            message.SubjectEncoding = System.Text.Encoding.UTF8;
            // Set the method that is called back when the send operation ends.
            client.SendCompleted += new 
            SendCompletedEventHandler(SendCompletedCallback);
            // The userState can be any object that allows your callback 
            // method to identify this send operation.
            // For this example, the userToken is a string constant.
            string userState = "test message1";
            client.SendAsync(message, userState);
            Console.WriteLine("Sending message... press c to cancel mail. Press any other key to exit.");
            string answer = Console.ReadLine();
            // If the user canceled the send, and mail hasn't been sent yet,
            // then cancel the pending operation.
            if (answer.StartsWith("c") && mailSent == false)
            {
                client.SendAsyncCancel();
            }
            // Clean up.
            message.Dispose();
            Console.WriteLine("Goodbye.");
        }
    }
}

System.Object
  System.Net.Mail.SmtpClient

Les membres statiques publics (Shared en Visual Basic) de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition

Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.

.NET Framework

Prise en charge dans : 2.0
Afficher: