SendMailErrorEventArgs Classe

Définition

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.

public ref class SendMailErrorEventArgs : EventArgs
public class SendMailErrorEventArgs : EventArgs
type SendMailErrorEventArgs = class
    inherit EventArgs
Public Class SendMailErrorEventArgs
Inherits EventArgs
Héritage
SendMailErrorEventArgs

Exemples

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

Si la modification du mot de passe réussit, le code du SendingMail gestionnaire d’événements tente d’envoyer un e-mail à l’utilisateur pour confirmer la modification. SMTP doit déjà être configuré sur le serveur pour que cet exemple de code fonctionne. Pour plus d’informations sur la configuration d’un serveur SMTP, consultez Guide pratique pour installer et configurer des serveurs virtuels SMTP dans IIS 6.0. Pour les besoins de cet exemple, il n’est pas nécessaire de configurer un serveur SMTP ; l’exemple est construit pour tester l’échec de l’envoi d’un message électronique.

Si un serveur de messagerie n’est pas configuré correctement ou si une autre erreur se produit et que l’e-mail ne peut pas être envoyé, la SendMailError fonction est appelée. Un message s’affiche pour l’utilisateur. En outre, un événement est consigné dans le journal des événements des applications Windows avec l’hypothèse qu’une source d’événement nommée MySamplesSite existe déjà. Consultez l’exemple de code ci-dessous pour créer la source d’événement spécifiée. Pour plus d’informations sur la création d’une source d’événements, consultez Gestion des événements de serveur dans ASP.NET pages Web Forms. La Handled propriété de l’objet SendMailErrorEventArgs est définie sur true pour indiquer que l’erreur a été gérée.

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<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 style="text-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>
<%@ Page Language="VB" AutoEventWireup="True" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

  Public Sub MySendingMail(ByVal Sender As Object, ByVal e As MailMessageEventArgs)
    Message1.Text = "Sent mail to you to confirm the password change."
  End Sub

  Public Sub MySendMailError(ByVal Sender As Object, ByVal e As SendMailErrorEventArgs)
    Message1.Text = "Could not send mail to confirm the password change."
    
    ' The MySamplesSite event source has already been created by an administrator.
    Dim myLog As 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
    
  End Sub

</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 style="text-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 programmation la source d’événement nommée MySamplesSite à votre journal des applications. Cette source d’événement doit exister pour que le premier exemple de code fonctionne correctement. L’exemple de code suivant nécessite 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());
            }
        }
    }
}
Imports System.Collections.Generic
Imports System.Text
Imports System.Diagnostics


Namespace CreateEventSource
  Class Program
    Sub Main()

        Try
            ' Create the source, if it does not already exist.
            If Not (EventLog.SourceExists("MySamplesSite")) Then
                EventLog.CreateEventSource("MySamplesSite", "Application")
                Console.WriteLine("Creating Event Source")
            End If

            ' Create an EventLog instance and assign its source.
            Dim myLog As 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 e As Exception
            Console.WriteLine("Exception:")
            Console.WriteLine(e.ToString)
        End Try

    End Sub
  End Class
End Namespace

Remarques

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 ChangePassword contrôle ou le CreateUserWizard contrôle. Dans ce cas, l’objet SendMailErrorEventArgs est envoyé à .SendMailErrorEventHandler

Créez un SendMailErrorEventHandler délégué 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 essentiel d’envoyer un e-mail. Par exemple, si l’exception se produit lorsqu’un utilisateur travaille via un Assistant en plusieurs étapes, il peut être avantageux de consigner l’erreur, d’afficher un message d’information à l’utilisateur et de permettre à l’utilisateur de terminer l’Assistant.

Examinez la Exception propriété pour déterminer la cause réelle de l’exception. La raison la plus courante de l’exception est une erreur de configuration dans l’élément< smtp> (paramètres réseau) du fichier de configuration de l’ordinateur. Bien qu’une erreur comme celle-ci soit généralement détectée lors du développement et du débogage d’une application, les serveurs de messagerie peuvent échouer de manière inattendue dans un environnement de production, et vous devez déterminer si vous souhaitez que l’application entière échoue dans cette situation. Si ce n’est pas le cas, la gestion de l’événement permet à votre application de continuer.

Vous devez définir la Handled propriété sur true pour signaler que l’exception a été gérée ; sinon, l’exception est réapprépliquée et inclut la pile d’appels d’origine et le message d’erreur.

Si vous ne créez pas de gestionnaire d’événements pour l’événement, ou si vous créez un gestionnaire d’événements, mais que vous laissez la Handled propriété définie sur false, votre application web cessera de s’exécuter si une erreur se produit lors de l’envoi SendMailError d’un message électronique, et ASP.NET affichera un message d’erreur.

La OnSendMailError méthode permet également aux classes dérivées de gérer l’événement, au lieu d’être effectuée par le SendMailErrorEventHandler. Il s’agit de la technique préférée pour gérer l’événement dans une classe dérivée de ChangePassword ou CreateUserWizard.

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

Notes pour les héritiers

Lors de la OnSendMailError(SendMailErrorEventArgs) substitution dans une classe dérivée, veillez à appeler la OnSendMailError(SendMailErrorEventArgs) méthode de la classe de base pour permettre aux délégués inscrits de recevoir l’événement.

Constructeurs

SendMailErrorEventArgs(Exception)

Initialise une nouvelle instance de la classe SendMailErrorEventArgs.

Propriétés

Exception

Retourne l’exception levée par un service de messagerie SMTP lorsqu’un e-mail ne peut pas être envoyé.

Handled

Indique si l'exception SMTP contenue dans la propriété Exception a été gérée.

Méthodes

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

S’applique à

Voir aussi