Exporter (0) Imprimer
Développer tout
Développer Réduire

SendMailErrorEventHandler, délégué

Remarque : ce délégué est nouveau dans le .NET Framework version 2.0.

Représente la méthode qui gère l'événement SendMailError des contrôles tels 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 delegate void SendMailErrorEventHandler (
	Object sender,
	SendMailErrorEventArgs e
)
/** @delegate */
public delegate void SendMailErrorEventHandler (
	Object sender, 
	SendMailErrorEventArgs e
)
JScript prend en charge l'utilisation de délégués mais pas la déclaration de nouveaux délégués.

Paramètres

sender

Source de l'événement.

e

Objet SendMailErrorEventArgs qui contient les données d'événement.

Lorsque vous créez un délégué SendMailErrorEventHandler, vous spécifiez la méthode qui gérera l'événement. Pour associer l'événement à votre gestionnaire d'événements, ajoutez une instance du délégué à l'événement. Le gestionnaire d'événements est appelé chaque fois qu'un événement se produit, sauf si vous supprimez le délégué de cet événement. Pour plus d'informations sur les délégués de gestionnaires d'événements, consultez Gestion des événements serveur dans les pages Web ASP.NET.

Gérer l'événement SendMailError permet à votre application Web de continuer à fonctionner, même si une exception se produit lors de la tentative d'envoi d'un message électronique. Cela peut s'avérer utile par exemple si l'exception se produit lorsqu'un utilisateur parcourt un Assistant à plusieurs étapes. Il est recommandé d'enregistrer l'erreur, d'afficher un message d'information à l'attention de l'utilisateur et de permettre à l'utilisateur de fermer l'Assistant plutôt que l'application.

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 autorise également les classes dérivées à gérer l'événement au lieu de 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.

L'exemple de code suivant montre 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 essaie d'utiliser le protocole SMTP pour envoyer un message électronique à l'utilisateur et confirmer la modification. Cette opération s'effectue dans le gestionnaire d'événements SendingMail. 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());
            }
        }
    }
}

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