SendMailErrorEventArgs SendMailErrorEventArgs SendMailErrorEventArgs SendMailErrorEventArgs Class

Definizione

Fornisce i dati per l'evento SendMailError di controlli quali ChangePassword, CreateUserWizard e 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
Ereditarietà
SendMailErrorEventArgsSendMailErrorEventArgsSendMailErrorEventArgsSendMailErrorEventArgs

Esempi

Nell'esempio di codice seguente viene illustrata una pagina ASP.NET ChangePassword che utilizza un controllo Web e include un gestore eventi SendMailError per l'evento denominato 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. Nell'esempio di codice si presuppone che il sito Web ASP.NET sia stato configurato per utilizzare l'appartenenza ASP.NET e l'autenticazione basata su form e che sia stato creato un utente il cui nome e password sono noti.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. Per altre informazioni, vedere Procedura: Implementare l'autenticazione basatasu form semplici.For more information, see How to: Implement Simple Forms Authentication.

Se la modifica della password ha esito positivo, il SendingMail codice nel gestore dell'evento tenta di inviare un messaggio di posta elettronica all'utente per confermare la modifica.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. Per consentire il funzionamento di questo esempio di codice, è necessario che nel server sia già configurato SMTP.SMTP must already be configured on the server in order for this code example to work. Per informazioni su come configurare un server SMTP, vedere il pennino: Procedura: Installare e configurare i server virtuali SMTP in IIS6,0.For information about how to configure an SMTP server, see NIB: How to: Install and Configure SMTP Virtual Servers in IIS 6.0. Ai fini di questo esempio, non è necessario configurare un server SMTP. L'esempio viene costruito per verificare la mancata trasmissione di un messaggio di posta elettronica.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.

Se un server di posta non è configurato correttamente o si verifica un altro errore e non è possibile inviare il messaggio SendMailError di posta elettronica, viene chiamata la funzione.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. Viene visualizzato un messaggio all'utente.A message is displayed to the user. Inoltre, viene registrato un evento nel registro eventi applicazioni di Windows con il presupposto che esista già un'origine evento denominata MySamplesSite.In addition, an event is logged to the Windows Application event log with the assumption that an event source named MySamplesSite already exists. Vedere l'esempio di codice seguente per creare l'origine evento specificata.See the code example below to create the specified event source. Per ulteriori informazioni sulla creazione di un'origine eventi, vedere gestione degli eventi del server nelle pagine Web form ASP.NET.For more information about creating an event source, see Server Event Handling in ASP.NET Web Forms Pages. La Handled proprietà true dell'oggetto è impostata su per indicare che l'errore è stato gestito. SendMailErrorEventArgsThe 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>

Usare l'esempio di codice seguente se è necessario aggiungere a livello di codice l'origine evento denominata MySamplesSite al log applicazioni.Use the following code example if you need to programmatically add the event source named MySamplesSite to your Application log. Questa origine evento deve esistere affinché il primo esempio di codice funzioni correttamente.This event source must exist in order for the first code example to work correctly. Nell'esempio di codice seguente sono necessari i privilegi di amministratore.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

Commenti

L' SendMailErrorEventArgs oggetto contiene un messaggio di errore generato dal provider di posta SMTP quando non è possibile inviare un messaggio ChangePassword di posta elettronica dal controllo o dal CreateUserWizard controllo.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. In tal caso, l' SendMailErrorEventArgs oggetto viene inviato SendMailErrorEventHandlera.In such a case, the SendMailErrorEventArgs object is sent to the SendMailErrorEventHandler.

Creare un SendMailErrorEventHandler delegato per gestire l'evento.Create a SendMailErrorEventHandler delegate to handle the event. La gestione dell'evento consente all'applicazione Web di continuare a funzionare anche se si è verificata un'eccezione.Handling the event allows your Web application to continue to run even though an exception has occurred. Questa opzione è utile quando non è fondamentale inviare un messaggio di posta elettronica.This is useful when it is not critical to send an email message. Se, ad esempio, l'eccezione si verifica quando un utente lavora con una procedura guidata in più passaggi, può risultare vantaggioso registrare l'errore, visualizzare un messaggio informativo per l'utente e consentire all'utente di completare la procedura guidata.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.

Esaminare la Exception proprietà per determinare la vera e propria origine dell'eccezione.Examine the Exception property to determine the actual cause of the exception. Il motivo più comune per l'eccezione è un errore di configurazione nell' <elemento> SMTP (impostazioni di rete) del file di configurazione del computer.The most common reason for the exception is a configuration error in the <smtp> Element (Network Settings) of the machine configuration file. Sebbene un errore come questo venga in genere individuato durante lo sviluppo e il debug di un'applicazione, i server di posta possono avere esito negativo in un ambiente di produzione ed è necessario determinare se si desidera che l'intera applicazione abbia esito negativo in questa situazione.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. In caso contrario, la gestione dell'evento consente di continuare l'applicazione.If not, handling the event allows your application to proceed.

È necessario impostare la Handled proprietà su true per segnalare che l'eccezione è stata gestita; in caso contrario, l'eccezione viene rigenerata e includerà lo stack di chiamate e il messaggio di errore originali.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.

Se non si crea un gestore eventi per l' SendMailError evento o se si crea un gestore eventi, ma si lascia la Handled proprietà impostata su false, l'esecuzione dell'applicazione Web verrà arrestata se si verifica un errore durante l'invio di un messaggio di posta elettronica e ASP.NET Visualizza un messaggio di errore.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.

Il OnSendMailError metodo consente inoltre alle classi derivate di gestire l'evento, anziché questa operazione eseguita SendMailErrorEventHandlerda.The OnSendMailError method also allows derived classes to handle the event, instead of this being done by the SendMailErrorEventHandler. Questa è la tecnica consigliata per la gestione dell'evento in una classe derivata da ChangePassword o CreateUserWizard.This is the preferred technique for handling the event in a class that is derived from ChangePassword or CreateUserWizard.

Per ulteriori informazioni sulla gestione degli eventi, vedere gestione degli eventi del server nelle pagine Web form ASP.NET.For more information about handling events, see Server Event Handling in ASP.NET Web Forms Pages.

Note per gli eredi

Quando si esegue OnSendMailError(SendMailErrorEventArgs) l'override in una classe derivata, assicurarsi di chiamare OnSendMailError(SendMailErrorEventArgs) il metodo della classe di base per consentire ai delegati registrati di ricevere l'evento.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.

Costruttori

SendMailErrorEventArgs(Exception) SendMailErrorEventArgs(Exception) SendMailErrorEventArgs(Exception) SendMailErrorEventArgs(Exception)

Inizializza una nuova istanza della classe SendMailErrorEventArgs.Initializes a new instance of the SendMailErrorEventArgs class.

Proprietà

Exception Exception Exception Exception

Restituisce l'eccezione generata da un servizio di posta SMTP quando non è possibile inviare un messaggio di posta elettronica.Returns the exception thrown by an SMTP mail service when an email message cannot be sent.

Handled Handled Handled Handled

Indica se l'eccezione SMTP contenuta nella proprietà Exception è stata gestita.Indicates if the SMTP exception that is contained in the Exception property has been handled.

Metodi

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Funge da funzione hash predefinita.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Inherited from Object)

Si applica a

Vedi anche