SendMailErrorEventArgs Klasa

Definicja

Zapewnia dane dla SendMailError zdarzenia formantów, takich jak ChangePassword kontrolka, CreateUserWizard formant i PasswordRecovery formant.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
Dziedziczenie
SendMailErrorEventArgs

Przykłady

Poniższy przykład kodu demonstruje stronę ASP.NET, która używa ChangePassword kontrolki sieci Web i zawiera program obsługi zdarzeń dla SendMailError zdarzenia o nazwie 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. W przykładzie kodu założono, że witryna sieci Web ASP.NET została skonfigurowana tak, aby korzystała z członkostwa ASP.NET i uwierzytelniania formularzy oraz że utworzono użytkownika, którego nazwa i hasło są znane.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. Aby uzyskać więcej informacji, zobacz How to: Implementuj proste uwierzytelnianie formularzy.For more information, see How to: Implement Simple Forms Authentication.

Jeśli zmiana hasła zakończyła się pomyślnie, kod w programie SendingMail obsługi zdarzeń próbuje wysłać wiadomość e-mail do użytkownika, aby potwierdzić zmianę.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. Protokół SMTP musi być już skonfigurowany na serwerze, aby ten przykład kodu działał.SMTP must already be configured on the server in order for this code example to work. Informacje o sposobach konfigurowania serwera SMTP można znaleźć w temacie How to: Install and configure SMTP Virtual Servers in 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. Na potrzeby tego przykładu nie jest konieczne konfigurowanie serwera SMTP; przykład został skonstruowany w celu przetestowania pod kątem niepomyślnego wysłania wiadomości e-mail.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.

Jeśli serwer poczty nie został prawidłowo skonfigurowany lub Wystąpił inny błąd i nie można wysłać wiadomości e-mail, SendMailError Funkcja jest wywoływana.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. Zostanie wyświetlony komunikat.A message is displayed to the user. Ponadto zdarzenie jest rejestrowane w dzienniku zdarzeń aplikacji systemu Windows z założeniem, że źródło zdarzeń o nazwie MySamplesSite już istnieje.In addition, an event is logged to the Windows Application event log with the assumption that an event source named MySamplesSite already exists. Zapoznaj się z poniższym przykładem kodu, aby utworzyć określone źródło zdarzenia.See the code example below to create the specified event source. Aby uzyskać więcej informacji na temat tworzenia źródła zdarzeń, zobacz temat Obsługa zdarzeń serwera na stronach formularzy sieci Web ASP.NET.For more information about creating an event source, see Server Event Handling in ASP.NET Web Forms Pages. HandledWłaściwość SendMailErrorEventArgs obiektu jest ustawiona na tak, aby true wskazywał, że błąd został obsłużony.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>

Użyj poniższego przykładu kodu, jeśli musisz programowo dodać Źródło zdarzenia o nazwie MySamplesSite do dziennika aplikacji.Use the following code example if you need to programmatically add the event source named MySamplesSite to your Application log. To źródło zdarzenia musi istnieć, aby pierwszy przykład kodu działał poprawnie.This event source must exist in order for the first code example to work correctly. Poniższy przykład kodu wymaga uprawnień administratora.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

Uwagi

SendMailErrorEventArgsObiekt zawiera komunikat o błędzie, który jest wywoływany przez dostawcę poczty SMTP, gdy nie można wysłać wiadomości e-mail przez ChangePassword formant lub CreateUserWizard formant.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. W takim przypadku SendMailErrorEventArgs obiekt jest wysyłany do SendMailErrorEventHandler .In such a case, the SendMailErrorEventArgs object is sent to the SendMailErrorEventHandler.

Utwórz SendMailErrorEventHandler delegata, aby obsłużyć zdarzenie.Create a SendMailErrorEventHandler delegate to handle the event. Obsługa zdarzenia pozwala aplikacji sieci Web kontynuować działanie, chociaż wystąpił wyjątek.Handling the event allows your Web application to continue to run even though an exception has occurred. Jest to przydatne, gdy wysyłanie wiadomości e-mail nie jest krytyczne.This is useful when it is not critical to send an email message. Na przykład jeśli wystąpi wyjątek, gdy użytkownik pracuje za pomocą Kreatora wieloetapowego, może być korzystne zarejestrowanie błędu, wyświetlenie komunikatu informacyjnego dla użytkownika i zezwolenie użytkownikowi na ukończenie działania kreatora.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.

Sprawdź Exception Właściwość, aby określić rzeczywistą przyczynę wyjątku.Examine the Exception property to determine the actual cause of the exception. Najbardziej typową przyczyną wyjątku jest błąd konfiguracji w < > elemencie SMTP (ustawienia sieciowe) pliku konfiguracji komputera.The most common reason for the exception is a configuration error in the <smtp> Element (Network Settings) of the machine configuration file. Mimo że ten błąd jest zwykle odnajdowany podczas opracowywania i debugowania aplikacji, serwery poczty mogą nieoczekiwanie kończyć się niepowodzeniem w środowisku produkcyjnym i należy określić, czy cała aplikacja ma kończyć się niepowodzeniem w takiej sytuacji.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. W przeciwnym razie obsługa zdarzenia pozwala aplikacji na wykonanie.If not, handling the event allows your application to proceed.

Należy ustawić właściwość na Handled , aby true sygnalizować, że wyjątek został obsłużony; w przeciwnym razie wyjątek jest ponownie zgłaszany i będzie zawierać oryginalny stos wywołań i komunikat o błędzie.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.

Jeśli nie utworzysz programu obsługi zdarzeń dla SendMailError zdarzenia lub jeśli utworzysz obsługę zdarzeń, ale opuścisz Handled Właściwość ustawioną na false , aplikacja sieci Web przestanie działać, jeśli wystąpi błąd podczas wysyłania wiadomości e-mail, a ASP.NET wyświetli komunikat o błędzie.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.

OnSendMailErrorMetoda umożliwia także klasom pochodnym obsłużenia zdarzenia, a nie przez SendMailErrorEventHandler .The OnSendMailError method also allows derived classes to handle the event, instead of this being done by the SendMailErrorEventHandler. Jest to preferowana technika obsługi zdarzenia w klasie, która jest pochodną ChangePassword lub CreateUserWizard .This is the preferred technique for handling the event in a class that is derived from ChangePassword or CreateUserWizard.

Aby uzyskać więcej informacji na temat obsługi zdarzeń, zobacz temat Obsługa zdarzeń serwera na stronach formularzy sieci Web ASP.NET.For more information about handling events, see Server Event Handling in ASP.NET Web Forms Pages.

Uwagi dotyczące dziedziczenia

Podczas zastępowania OnSendMailError(SendMailErrorEventArgs) w klasie pochodnej należy wywołać OnSendMailError(SendMailErrorEventArgs) metodę klasy bazowej, aby umożliwić zarejestrowanym delegatom odbieranie zdarzenia.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.

Konstruktory

SendMailErrorEventArgs(Exception)

Inicjuje nowe wystąpienie klasy SendMailErrorEventArgs.Initializes a new instance of the SendMailErrorEventArgs class.

Właściwości

Exception

Zwraca wyjątek zgłoszony przez usługę poczty SMTP, gdy nie można wysłać wiadomości e-mail.Returns the exception thrown by an SMTP mail service when an email message cannot be sent.

Handled

Wskazuje, czy wyjątek SMTP, który jest zawarty we Exception właściwości, został obsłużony.Indicates if the SMTP exception that is contained in the Exception property has been handled.

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetType()

Pobiera Type bieżące wystąpienie.Gets the Type of the current instance.

(Odziedziczone po Object)
MemberwiseClone()

Tworzy skróconą kopię bieżącego elementu Object .Creates a shallow copy of the current Object.

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)

Dotyczy

Zobacz też