SendMailErrorEventArgs.Exception Eigenschaft

Definition

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.

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

Eigenschaftswert

Exception

Ein Exception-Objekt, das die Ausnahme enthält.An Exception object that contains the exception.

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 Exception -Eigenschaft enthält die Ausnahme, die vom SMTP-e-Mail-Anbieter ausgelöst wird, wenn eine e-Mail-Nachricht nicht vom Steuerelement oder gesendet werden kann ChangePassword CreateUserWizard .The Exception property contains the exception that is thrown 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 diese Ausnahme ist ein Konfigurationsfehler im SMTP- < > Element (Netzwerkeinstellungen) der Computer Konfigurationsdatei, die die folgende Ausnahme Meldung erzeugt:The transport failed to connect to the server.The most common reason for this exception is a configuration error in the <smtp> Element (Network Settings) of the machine configuration file, which produces the following exception message: The transport failed to connect to the server.

Ausnahmen werden nicht ausgelöst, wenn in der e-Mail-Nachricht beim Einbetten einer Datei mit ein Fehler aufgetreten ist EmbeddedObjects .Exceptions are not thrown if there is an error in the email message when embedding a file using EmbeddedObjects. Stattdessen wird die eingebettete Datei beschädigt, wenn die e-Mail-Nachricht angezeigt wird.Instead, the embedded file appears broken when the mail message is viewed.

Sie müssen das Handled -Objekt, das als- e Parameter von übergeben wird, auf festlegen, um SendMailErrorEventArgs true zu signalisieren, dass die Ausnahme behandelt wurde. andernfalls wird die Ausnahme erneut ausgelöst, und enthält die ursprüngliche und die ursprüngliche Fehlermeldung.You must set the Handled object, passed as the e parameter of SendMailErrorEventArgs, to true to signal that the exception has been handled; otherwise, the exception is rethrown, and includes the original call stack and error message.

Gilt für:

Weitere Informationen