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.Provides data for the SendMailError event of controls such as the ChangePassword control, the CreateUserWizard control, and the PasswordRecovery control.

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 montre une page ASP.NET qui utilise un ChangePassword contrôle Web et comprend un gestionnaire d’événements pour l' SendMailError événement nommé SendMailError.The following code example demonstrates an ASP.NET page that uses a ChangePassword Web control, and includes an event handler for the SendMailError event named SendMailError. L’exemple de code suppose que le site Web ASP.NET a été configuré pour utiliser l’authentification par formulaire et l’appartenance à ASP.NET, et qu’un utilisateur a été créé dont le nom et le mot de passe sont connus.The code example assumes that the ASP.NET Web site has been configured to use ASP.NET membership and Forms authentication, and that a user has been created whose name and password are known to you. Pour plus d’informations, consultez Comment : implémenter l’authentification par formulaire simple.For more information, see How to: Implement Simple Forms Authentication.

Si la modification du mot de passe est réussie, le code dans le SendingMail Gestionnaire d’événements tente d’envoyer un message électronique à l’utilisateur pour confirmer la modification.If the password change succeeds, the code in the SendingMail event handler attempts to send an email message to the user to confirm the change. Le protocole SMTP doit déjà être configuré sur le serveur pour que cet exemple de code fonctionne.SMTP must already be configured on the server in order for this code example to work. Pour plus d’informations sur la configuration d’un serveur SMTP, voir procédure : installer et configurer des serveurs virtuels SMTP dans IIS 6,0.For information about how to configure an SMTP server, see How to: Install and Configure SMTP Virtual Servers in IIS 6.0. Dans le cadre 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.For the purposes of this example, it is not necessary to configure an SMTP server; the example is constructed to test for a failure to send an email message.

Si un serveur de messagerie n’est pas configuré correctement ou si une autre erreur se produit et que le message électronique ne peut pas être envoyé, la SendMailError fonction est appelée.If a mail server is not configured correctly or some other error occurs and the email message cannot be sent, the SendMailError function is called. Un message s’affiche pour l’utilisateur.A message is displayed to the user. En outre, un événement est consigné dans le journal des événements des applications Windows en partant du principe qu’une source d’événements nommée MySamplesSite existe déjà.In addition, an event is logged to the Windows Application event log with the assumption that an event source named MySamplesSite already exists. Consultez l’exemple de code ci-dessous pour créer la source d’événements spécifiée.See the code example below to create the specified event source. Pour plus d’informations sur la création d’une source d’événements, consultez gestion des événements serveur dans ASP.NET Web Forms pages.For more information about creating an event source, see Server Event Handling in ASP.NET Web Forms Pages. La Handled propriété de l' SendMailErrorEventArgs objet a la valeur true pour indiquer que l’erreur a été gérée.The Handled property of the SendMailErrorEventArgs object is set to true to indicate that the error has been handled.

<%@ 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énements nommée MySamplesSite dans le journal de votre application.Use the following code example if you need to programmatically add the event source named MySamplesSite to your Application log. Cette source d’événement doit exister pour que le premier exemple de code fonctionne correctement.This event source must exist in order for the first code example to work correctly. L’exemple de code suivant requiert des privilèges d’administrateur.The following code example requires Administrator privileges.

#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' SendMailErrorEventArgs objet 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.The SendMailErrorEventArgs object contains an error message that is raised by the SMTP mail provider when an email message cannot be sent by the ChangePassword control, or the CreateUserWizard control. Dans ce cas, l' SendMailErrorEventArgs objet est envoyé à l' SendMailErrorEventHandler .In such a case, the SendMailErrorEventArgs object is sent to the SendMailErrorEventHandler.

Créez un SendMailErrorEventHandler délégué pour gérer l’événement.Create a SendMailErrorEventHandler delegate to handle the event. La gestion de l’événement permet à votre application Web de continuer à s’exécuter même si une exception s’est produite.Handling the event allows your Web application to continue to run even though an exception has occurred. Cela s’avère utile lorsqu’il n’est pas essentiel d’envoyer un message électronique.This is useful when it is not critical to send an email message. Par exemple, si l’exception se produit lorsqu’un utilisateur travaille à l’aide d’un assistant à plusieurs étapes, il peut être avantageux d’enregistrer l’erreur, d’afficher un message d’information à l’utilisateur et de permettre à l’utilisateur de terminer l’Assistant.For example, if the exception occurs when a user is working through a multi-step wizard, it can be advantageous to log the error, display an informative message to the user, and allow the user to complete the wizard.

Examinez la Exception propriété pour déterminer la cause réelle de l’exception.Examine the Exception property to determine the actual cause of the 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.The most common reason for the exception is a configuration error in the <smtp> Element (Network Settings) of the machine configuration file. Bien qu’une erreur de ce type 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 façon inattendue dans un environnement de production, et vous devez déterminer si vous souhaitez que l’application entière échoue dans cette situation.Although an error like this is typically discovered during the development and debugging of an application, mail servers can fail unexpectedly in a production environment, and you must determine whether you want the entire application to fail in that situation. Si ce n’est pas le cas, la gestion de l’événement permet à votre application de continuer.If not, handling the event allows your application to proceed.

Vous devez affecter à la propriété la valeur Handled true 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.You must set the Handled property to true to signal that the exception has been handled; otherwise, the exception is rethrown, and will include the original call stack and error message.

Si vous ne créez pas de gestionnaire d’événements pour l' SendMailError é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 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.If you do not create an event handler for the SendMailError event, or if you create an event handler but leave the Handled property set to false, your Web application will stop running if an error occurs when sending an email message, and ASP.NET will display an error message.

La OnSendMailError méthode permet également aux classes dérivées de gérer l’événement, au lieu que cette opération soit effectuée par le SendMailErrorEventHandler .The OnSendMailError method also allows derived classes to handle the event, instead of this being done by the SendMailErrorEventHandler. Il s’agit de la technique recommandée pour gérer l’événement dans une classe dérivée de ChangePassword ou CreateUserWizard .This is the preferred technique for handling the event in a class that is derived from ChangePassword or CreateUserWizard.

Pour plus d’informations sur la gestion des événements, consultez gestion des événements serveur dans ASP.NET Web Forms pages.For more information about handling events, see Server Event Handling in ASP.NET Web Forms Pages.

Notes pour les héritiers

Lors d' OnSendMailError(SendMailErrorEventArgs) une 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.When overriding OnSendMailError(SendMailErrorEventArgs) in a derived class, be sure to call the OnSendMailError(SendMailErrorEventArgs) method of the base class to enable registered delegates to receive the event.

Constructeurs

SendMailErrorEventArgs(Exception)

Initialise une nouvelle instance de la classe SendMailErrorEventArgs.Initializes a new instance of the SendMailErrorEventArgs class.

Propriétés

Exception

Retourne l’exception levée par un service de messagerie SMTP lorsqu’un e-mail ne peut pas être envoyé.Returns the exception thrown by an SMTP mail service when an email message cannot be sent.

Handled

Indique si l'exception SMTP contenue dans la propriété Exception a été gérée.Indicates if the SMTP exception that is contained in the Exception property has been handled.

Méthodes

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.Determines whether the specified object is equal to the current object.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.Serves as the default hash function.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.Creates a shallow copy of the current Object.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l'objet actuel.Returns a string that represents the current object.

(Hérité de Object)

S’applique à

Voir aussi