SendMailErrorEventArgs.Handled Eigenschaft

Definition

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.

public:
 property bool Handled { bool get(); void set(bool value); };
public bool Handled { get; set; }
member this.Handled : bool with get, set
Public Property Handled As Boolean

Eigenschaftswert

Boolean

Wenn true, wird die Ausnahme vom SendMailErrorEventHandler-Delegaten verwendet und behandelt.If true, the exception is consumed and handled by the SendMailErrorEventHandler delegate. Wenn false, wird die Ausnahme unter Einbeziehung der ursprünglichen Aufrufliste und Fehlermeldung erneut ausgelöst.If false, the exception is rethrown, including the original call stack and error message.

Der Standardwert ist false.The default is false.

Beispiele

Im folgenden Codebeispiel wird eine ASP.NET-Seite veranschaulicht, die ein ChangePassword websteuer Element verwendet und einen Ereignishandler für das-Ereignis mit dem SendMailError Namen enthält 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. 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 Gewusst wie: Implementieren einer einfachen Formular Authentifizierung.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 Vorgehens Weise: Installieren und Konfigurieren virtueller SMTP-Server 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. 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 festgelegt, true 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

Die- Handled Eigenschaft gibt an, ob der Exception behandelt wurde.The Handled property indicates if the Exception has been handled. Diese Ausnahme wird vom SMTP-e-Mail-Anbieter ausgelöst, wenn eine e-Mail-Nachricht nicht vom Steuerelement oder gesendet werden kann ChangePassword CreateUserWizard .The exception is raised by the SMTP mail provider when an email message cannot be sent by the ChangePassword control or the CreateUserWizard. Der häufigste Grund für die Ausnahme ist ein Konfigurationsfehler im SMTP- < > 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.

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

Gilt für:

Weitere Informationen