Cette page vous a-t-elle été utile ?
Votre avis sur ce contenu est important. N'hésitez pas à nous faire part de vos commentaires.
Vous avez d'autres commentaires ?
1500 caractères restants
Exporter (0) Imprimer
Développer tout

SendMailErrorEventArgs, classe

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

Fournit des données pour l'événement SendMailError de contrôles tel que le contrôle ChangePassword, le contrôle CreateUserWizard et le contrôle PasswordRecovery.

Espace de noms : System.Web.UI.WebControls
Assembly : System.Web (dans system.web.dll)

public class SendMailErrorEventArgs : EventArgs
public class SendMailErrorEventArgs extends EventArgs
public class SendMailErrorEventArgs extends EventArgs

L'objet SendMailErrorEventArgs contient un message d'erreur qui est déclenché par le fournisseur de messagerie SMTP lorsqu'un message électronique ne peut pas être envoyé par le contrôle ChangePassword ou CreateUserWizard. Dans un tel cas, l'objet SendMailErrorEventArgs est envoyé à SendMailErrorEventHandler.

Créez un délégué SendMailErrorEventHandler pour gérer l'événement. La gestion de l'événement permet à votre application Web de continuer à s'exécuter même si une exception s'est produite. Cela est utile lorsqu'il n'est pas vital d'envoyer un message électronique. Par exemple, si l'exception se produit lorsqu'un utilisateur parcourt un Assistant à plusieurs étapes, cela peut être utile pour écrire l'erreur dans le journal, afficher un message d'information à l'attention de l'utilisateur et permettre à l'utilisateur de fermer l'Assistant.

Examinez la propriété Exception pour déterminer la cause réelle de l'exception. La cause la plus fréquente de l'exception est une erreur de configuration dans le smtp, élément (paramètres réseau) du fichier de configuration machine. Bien qu'une erreur de ce type soit généralement découverte pendant le développement et le débogage d'une application, les serveurs de messagerie peuvent échouer de façon inattendue dans un environnement de production et vous devez déterminer si vous souhaitez que l'application entière échoue dans ce cas. Si ce n'est pas le cas, la gestion de l'événement permet à votre application de continuer.

Vous devez affecter true à la propriété Handled pour signaler que l'exception a été gérée ; sinon l'exception est levée de nouveau et inclura la pile des appels et le message d'erreur d'origine.

Si vous ne créez pas de gestionnaire d'événements pour l'événement SendMailError, ou si vous créez un gestionnaire d'événements, mais laissez la propriété Handled avec la valeur false, votre application Web cesse de s'exécuter si une erreur se produit lors de l'envoi d'un message électronique, et ASP.NET affiche un message d'erreur.

La méthode OnSendMailError permet également aux classes dérivées de gérer l'événement, au lieu que cela soit fait par SendMailErrorEventHandler. Cette technique est recommandée pour gérer l'événement dans une classe dérivée de ChangePassword ou de CreateUserWizard.

Pour plus d'informations sur la gestion des événements, consultez Gestion des événements serveur dans les pages Web ASP.NET.

Remarques à l'attention des héritiers Lors de la substitution de OnSendMailError dans une classe dérivée, veillez à appeler la méthode OnSendMailError de la classe de base pour permettre aux délégués inscrits de recevoir l'événement.

L'exemple de code suivant illustre une page ASP.NET qui utilise un contrôle Web ChangePassword et inclut un gestionnaire d'événements pour l'événement SendMailError nommé SendMailError. Cet exemple de code suppose que le site Web ASP.NET a été configuré pour utiliser l'appartenance (membership) d'ASP.NET et l'authentification par formulaire, et qu'un utilisateur dont vous connaissez le nom et le mot de passe a été créé. Pour plus d'informations, consultez Comment : implémenter une simple authentification par formulaire.

Si la modification du mot de passe réussit, le code du gestionnaire d'événements SendingMail tente d'envoyer un message électronique à l'utilisateur pour confirmer la modification. Le protocole SMTP doit déjà être configuré sur le serveur pour que cet exemple de code puisse fonctionner. Pour plus d'informations sur la configuration d'un serveur SMTP, consultez Comment : installer et configurer des serveurs virtuels SMTP dans IIS. Pour les besoins de cet exemple, il n'est pas nécessaire de configurer un serveur SMTP ; l'exemple est construit pour tester le fait qu'une défaillance entraîne l'envoi d'un message électronique.

Si le serveur de messagerie n'est pas configuré correctement ou qu'une autre erreur se produit et que le message électronique ne peut pas être envoyé, la fonction SendMailError est appelée. Un message s'affiche à l'attention de l'utilisateur. De plus, un événement est enregistré dans le journal des événements de l'application Windows en faisant l'hypothèse qu'une source d'événements intitulée MySamplesSite existe déjà. Consultez l'exemple de code ci-dessous pour créer la source d'événements spécifiée. Pour plus d'informations sur la création d'une source d'événements, consultez Gestion des événements serveur dans les pages Web ASP.NET. La valeur true est affectée à la propriété Handled de l'objet SendMailErrorEventArgs pour indiquer que l'erreur a été gérée.

<%@ Page Language="C#" AutoEventWireup="True" %>

<script runat="server">

  void MySendingMail(object sender, MailMessageEventArgs e)
  {
    Message1.Text = "Sent mail to you to confirm the password change.";
  }

  void MySendMailError(object sender, SendMailErrorEventArgs e)
  {
    Message1.Text = "Could not send email to confirm password change.";

    // The MySamplesSite event source has already been created by an administrator.
    System.Diagnostics.EventLog myLog = new System.Diagnostics.EventLog();
    myLog.Log = "Application";
    myLog.Source = "MySamplesSite";
    myLog.WriteEntry(
        "Sending mail via SMTP failed with the following error: " + 
        e.Exception.Message.ToString(), 
        System.Diagnostics.EventLogEntryType.Error);

    e.Handled = true;
  }

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
  <title>ChangePassword including a SendMailError Event</title>
</head>
<body>
  <form id="form1" runat="server">
  <div align="center">

    <h1>ChangePassword</h1>
    
    <asp:LoginView ID="LoginView1" Runat="server" 
      Visible="true">
      <LoggedInTemplate>
        <asp:LoginName ID="LoginName1" Runat="server" FormatString="You are logged in as {0}." />
        <BR />
      </LoggedInTemplate>
      <AnonymousTemplate>
        You are not logged in
      </AnonymousTemplate>
    </asp:LoginView><br />
    
    <asp:ChangePassword ID="ChangePassword1" Runat="server"
      BorderStyle="Solid" 
      BorderWidth="1" 
      CancelDestinationPageUrl="~/Default.aspx" 
      DisplayUserName="true"
      OnSendingMail="MySendingMail" 
      OnSendMailError="MySendMailError" 
      ContinueDestinationPageUrl="~/Default.aspx" >
      <MailDefinition 
        BodyFileName="~\MailFiles\ChangePasswordMail.htm" 
        Subject="Activity information for you">
        <EmbeddedObjects>
          <asp:EmbeddedMailObject Name="LoginGif" Path="~\MailFiles\Login.gif" />
          <asp:EmbeddedMailObject Name="PrivacyNoticeTxt" Path="~\MailFiles\PrivacyNotice.txt" />
        </EmbeddedObjects>
      </MailDefinition>
    </asp:ChangePassword><br />
  
    <asp:Label ID="Message1" Runat="server" ForeColor="Red" /><br />

    <asp:HyperLink ID="HyperLink1" Runat="server" 
      NavigateUrl="~/Default.aspx">
      Home
    </asp:HyperLink>
    
  </div>
  </form>
</body>
</html>

Utilisez l'exemple de code suivant si vous devez ajouter par programme la source d'événements nommée MySamplesSite au journal d'applications. Cette source d'événements doit exister pour que le premier exemple de code fonctionne correctement. L'exemple de code suivant requiert des privilèges d'administrateur.

#region Using directives

using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;

#endregion

namespace CreateEventSource
{
    class Program
    {
        static void Main(string[] args)
        {

            try
            {
                // Create the source, if it does not already exist.
                if (!EventLog.SourceExists("MySamplesSite"))
                {
                    EventLog.CreateEventSource("MySamplesSite", "Application");
                    Console.WriteLine("Creating Event Source");
                }

                // Create an EventLog instance and assign its source.
                EventLog myLog = new EventLog();
                myLog.Source = "MySamplesSite";

                // Write an informational entry to the event log.    
                myLog.WriteEntry("Testing writing to event log.");

                Console.WriteLine("Message written to event log.");
            }
            catch (Exception e)
            {
                Console.WriteLine("Exception:");
                Console.WriteLine("{0}", e.ToString());
            }
        }
    }
}

  • AspNetHostingPermission  pour opérer dans un environnement hébergé. Valeur de demande : LinkDemand ; valeur d'autorisation : Minimal
  • AspNetHostingPermission  pour opérer dans un environnement hébergé. Valeur de demande : InheritanceDemand ; valeur d'autorisation : Minimal

System.Object
   System.EventArgs
    System.Web.UI.WebControls.SendMailErrorEventArgs

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 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

Ajouts de la communauté

AJOUTER
Afficher:
© 2015 Microsoft