SendMailErrorEventArgs Klasse

Definition

Stellt Daten für das SendMailError-Ereignis von Steuerelementen wie ChangePassword, CreateUserWizard und PasswordRecovery bereit.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
Vererbung
SendMailErrorEventArgs

Beispiele

Im folgenden Codebeispiel wird eine ASP.NET-Seite veranschaulicht, die ein ChangePassword-websteuer Element verwendet und einen Ereignishandler für das SendMailError-Ereignis mit dem Namen SendMailError enthält.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. Im Codebeispiel wird davon ausgegangen, dass die ASP.NET-Website für die Verwendung der ASP.NET-Mitgliedschaft und Formular Authentifizierung konfiguriert wurde und dass ein Benutzer erstellt wurde, dessen Name und Kennwort Ihnen bekannt sind.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. Weitere Informationen finden Sie unter [Vorgehensweise: Implementieren Sie die einfache Formular Authentifizierung @ no__t-0.For more information, see How to: Implement Simple Forms Authentication.

Wenn die Kenn Wort Änderung erfolgreich ist, versucht der Code im SendingMail-Ereignishandler, eine e-Mail-Nachricht an den Benutzer zu senden, um die Änderung zu bestätigen.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. SMTP muss bereits auf dem Server konfiguriert sein, damit dieses Codebeispiel funktioniert.SMTP must already be configured on the server in order for this code example to work. Informationen zum Konfigurieren eines SMTP-Servers finden Sie unter [gewusst wie: Installieren und Konfigurieren virtueller SMTP-Server in IIS 6.0 @ no__t-0.For information about how to configure an SMTP server, see How to: Install and Configure SMTP Virtual Servers in IIS 6.0. Im Rahmen dieses Beispiels ist es nicht erforderlich, einen SMTP-Server zu konfigurieren. Das Beispiel wird erstellt, um zu testen, dass ein Fehler beim Senden einer e-Mail-Nachricht vorliegt.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.

Wenn ein Mailserver nicht ordnungsgemäß konfiguriert ist oder ein anderer Fehler auftritt und die e-Mail-Nachricht nicht gesendet werden kann, wird die SendMailError-Funktion aufgerufen.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. Dem Benutzer wird eine Meldung angezeigt.A message is displayed to the user. Außerdem wird ein Ereignis im Windows-Anwendungs Ereignisprotokoll mit der Annahme protokolliert, dass eine Ereignis Quelle mit dem Namen MySamplesSite bereits vorhanden ist.In addition, an event is logged to the Windows Application event log with the assumption that an event source named MySamplesSite already exists. Weitere Informationen finden Sie im folgenden Codebeispiel, um die angegebene Ereignis Quelle zu erstellen.See the code example below to create the specified event source. Weitere Informationen zum Erstellen einer Ereignis Quelle finden Sie unter Server Ereignis Behandlung auf ASP.net-Web Forms Seiten.For more information about creating an event source, see Server Event Handling in ASP.NET Web Forms Pages. Die Handled-Eigenschaft des SendMailErrorEventArgs-Objekts wird auf true festgelegt, um anzugeben, dass der Fehler behandelt wurde.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>

Verwenden Sie das folgende Codebeispiel, wenn Sie die Ereignis Quelle namens MySamplesSite Programm gesteuert dem Anwendungsprotokoll hinzufügen müssen.Use the following code example if you need to programmatically add the event source named MySamplesSite to your Application log. Diese Ereignis Quelle muss vorhanden sein, damit das erste Codebeispiel ordnungsgemäß funktioniert.This event source must exist in order for the first code example to work correctly. Für das folgende Codebeispiel sind Administrator Rechte erforderlich.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

Hinweise

Das SendMailErrorEventArgs-Objekt enthält eine Fehlermeldung, die vom SMTP-e-Mail-Anbieter ausgelöst wird, wenn eine e-Mail-Nachricht nicht vom ChangePassword-Steuerelement gesendet werden kann, oder CreateUserWizard-Steuerelement.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 einem solchen Fall wird das SendMailErrorEventArgs-Objekt an SendMailErrorEventHandler gesendet.In such a case, the SendMailErrorEventArgs object is sent to the SendMailErrorEventHandler.

Erstellen Sie einen SendMailErrorEventHandler-Delegaten, um das Ereignis zu behandeln.Create a SendMailErrorEventHandler delegate to handle the event. Wenn Sie das-Ereignis behandeln, kann die Webanwendung auch dann weiterhin ausgeführt werden, wenn eine Ausnahme aufgetreten ist.Handling the event allows your Web application to continue to run even though an exception has occurred. Dies ist nützlich, wenn es nicht wichtig ist, eine e-Mail-Nachricht zu senden.This is useful when it is not critical to send an email message. Wenn z. b. die Ausnahme auftritt, wenn ein Benutzer einen mehrstufigen Assistenten durchläuft, kann es vorteilhaft sein, den Fehler zu protokollieren, eine informative Meldung für den Benutzer anzuzeigen und dem Benutzer das Beenden des Assistenten zu gestatten.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.

Überprüfen Sie die Exception-Eigenschaft, um die tatsächliche Ursache der Ausnahme zu bestimmen.Examine the Exception property to determine the actual cause of the exception. Der häufigste Grund für die Ausnahme ist ein Konfigurationsfehler im <SMTP @ no__t-2-Element (Netzwerkeinstellungen) der Computer Konfigurationsdatei.The most common reason for the exception is a configuration error in the <smtp> Element (Network Settings) of the machine configuration file. Obwohl bei der Entwicklung und beim Debuggen einer Anwendung ein solcher Fehler normalerweise entdeckt wird, können e-Mail-Server in einer Produktionsumgebung unerwartet ausfallen, und Sie müssen bestimmen, ob die gesamte Anwendung in dieser Situation fehlschlagen soll.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. Wenn dies nicht der Fall ist, kann die Anwendung durch Behandeln des Ereignisses fortgesetzt werden.If not, handling the event allows your application to proceed.

Sie müssen die Handled-Eigenschaft auf true festlegen, um zu signalisieren, dass die Ausnahme behandelt wurde. Andernfalls wird die Ausnahme erneut ausgelöst, und Sie enthält die ursprüngliche und die ursprüngliche Fehlermeldung.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.

Wenn Sie keinen Ereignishandler für das SendMailError-Ereignis erstellen, oder wenn Sie einen Ereignishandler erstellen, aber die Eigenschaft Handled auf false festgelegt haben, wird die Ausführung der Webanwendung beendet, wenn beim Senden einer e-Mail-Nachricht ein Fehler auftritt, und ASP.net zeigt einen Fehler an. Nachricht.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.

Die OnSendMailError-Methode ermöglicht es abgeleiteten Klassen auch, das-Ereignis zu behandeln, anstatt dies durch SendMailErrorEventHandler zu tun.The OnSendMailError method also allows derived classes to handle the event, instead of this being done by the SendMailErrorEventHandler. Dies ist die bevorzugte Methode für die Behandlung des Ereignisses in einer Klasse, die von ChangePassword oder CreateUserWizard abgeleitet ist.This is the preferred technique for handling the event in a class that is derived from ChangePassword or CreateUserWizard.

Weitere Informationen zur Behandlung von Ereignissen finden Sie unter Server Ereignis Behandlung auf ASP.net-Web Forms Seiten.For more information about handling events, see Server Event Handling in ASP.NET Web Forms Pages.

Hinweise für Vererber

Wenn Sie OnSendMailError(SendMailErrorEventArgs) in einer abgeleiteten Klasse überschreiben, stellen Sie sicher, dass Sie die OnSendMailError(SendMailErrorEventArgs)-Methode der Basisklasse aufzurufen, damit registrierte Delegaten das Ereignis empfangen können.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.

Konstruktoren

SendMailErrorEventArgs(Exception)

Initialisiert eine neue Instanz der SendMailErrorEventArgs-Klasse.Initializes a new instance of the SendMailErrorEventArgs class.

Eigenschaften

Exception

Gibt die Ausnahme zurück, die vom SMTP-Maildienst ausgelöst wird, wenn eine E-Mail nicht gesendet werden kann.Returns the exception thrown by an SMTP mail service when an email message cannot be sent.

Handled

Gibt an, ob die in der Exception-Eigenschaft enthaltene SMTP-Ausnahme behandelt wurde.Indicates if the SMTP exception that is contained in the Exception property has been handled.

Methoden

Equals(Object)

Ermittelt, ob das angegebene Objekt und das aktuelle Objekt gleich sind.Determines whether the specified object is equal to the current object.

(Geerbt von Object)
GetHashCode()

Dient als die Standard-HashfunktionServes as the default hash function.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Geerbt von Object)

Gilt für:

Siehe auch