SendMailErrorEventArgs SendMailErrorEventArgs SendMailErrorEventArgs SendMailErrorEventArgs Class

Определение

Предоставляет данные для события SendMailError в таких элементах управления, как ChangePassword, CreateUserWizard и 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
Наследование
SendMailErrorEventArgsSendMailErrorEventArgsSendMailErrorEventArgsSendMailErrorEventArgs

Примеры

В следующем примере кода демонстрируется страница ASP.NET, которая использует ChangePassword веб-элемент управления и включает в себя обработчик событий для SendMailError событие с именем 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. В примере кода предполагается, что ASP.NET веб-сайт настроен на использование членства ASP.NET и проверки подлинности форм и что был создан пользователь, имя и пароль вы должны знать.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. Дополнительные сведения см. в разделе как: реализация простой проверки подлинности Forms.For more information, see How to: Implement Simple Forms Authentication.

Если смена пароля прошла успешно, код в SendingMail обработчик событий предпринимает попытку отправки сообщения электронной почты пользователю, чтобы подтвердить изменение.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 должен быть уже настроен на сервере в порядке для работы этого примера кода.SMTP must already be configured on the server in order for this code example to work. Сведения о настройке SMTP-сервера, см. в разделе NIB: Практическое: Установка и настройка виртуальные SMTP-серверы в IIS 6.0.For information about how to configure an SMTP server, see NIB: How to: Install and Configure SMTP Virtual Servers in IIS 6.0. Для целей этого примера нет необходимости для настройки SMTP-сервера; Пример предназначен для проверки на сбой отправки сообщения электронной почты.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.

Если почтовый сервер настроен неправильно или другой ошибки и не удается отправить сообщение электронной почты, SendMailError функция вызывается.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. Сообщение отображается для пользователя.A message is displayed to the user. Кроме того событие заносится в журнал событий приложений Windows, исходя из предположения, что источник события с именем MySamplesSite уже существует.In addition, an event is logged to the Windows Application event log with the assumption that an event source named MySamplesSite already exists. См. в примере кода ниже, чтобы создать указанный источник события.See the code example below to create the specified event source. Дополнительные сведения о создании источника событий, см. в разделе Server, обработка событий в страниц веб-форм ASP.NET.For more information about creating an event source, see Server Event Handling in ASP.NET Web Forms Pages. Handled Свойство SendMailErrorEventArgs имеет значение true для указания, что ошибка была обработана.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>

В следующем примере кода следует используйте, если вам нужно программным способом добавить источник события с именем MySamplesSite в журнал приложений.Use the following code example if you need to programmatically add the event source named MySamplesSite to your Application log. Источник событий должен существовать в порядке для первого примера кода для правильной работы.This event source must exist in order for the first code example to work correctly. В следующем примере кода требуются права администратора.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
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

Комментарии

SendMailErrorEventArgs Объект содержит сообщение об ошибке, вызванное объектом почтовым SMTP, если не удалось отправить сообщение электронной почты с ChangePassword элемента управления, или CreateUserWizard элемента управления.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. В таком случае SendMailErrorEventArgs объект отправляется для SendMailErrorEventHandler.In such a case, the SendMailErrorEventArgs object is sent to the SendMailErrorEventHandler.

Создание SendMailErrorEventHandler делегат для обработки события.Create a SendMailErrorEventHandler delegate to handle the event. Обработка события позволяет веб-приложения продолжить работу, несмотря на то, что произошло исключение.Handling the event allows your Web application to continue to run even though an exception has occurred. Это полезно в том случае, если она не важны для отправки сообщения электронной почты.This is useful when it is not critical to send an email message. Например если исключение возникает, когда пользователь работает с помощью нескольких шагов мастера, бывает полезно записать ошибку в журнал, отобразить информационное сообщение для пользователя и пользователи могут завершить работу мастера.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.

Изучите Exception свойства, чтобы определить действительную причину исключения.Examine the Exception property to determine the actual cause of the exception. Наиболее распространенной причиной для исключения является ошибка конфигурации <smtp> (сетевые параметры) файла конфигурации компьютера.The most common reason for the exception is a configuration error in the <smtp> Element (Network Settings) of the machine configuration file. Несмотря на то, что подобные ошибки обычно выявляются во время разработки и отладки приложения, почтовых серверов может привести к неожиданному в рабочей среде, и необходимо определить, следует ли переход на другой в этой ситуации всего приложения.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. В противном случае обработка события позволяет продолжить выполнение приложения.If not, handling the event allows your application to proceed.

Необходимо задать Handled свойства true информировать, что исключение было обработано; в противном случае — значение, исключение создается снова и будет включать исходный вызов стека и сообщение об ошибке.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.

Если не создать обработчик событий для SendMailError событий, или при создании обработчика событий, но оставить Handled свойство значение false, веб-приложения перестанут работать, если произошла ошибка при отправке сообщения электронной почты и будет ASP.NET сообщение об ошибке.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.

OnSendMailError Метод также позволяет производным классам обрабатывать событие, вместо этого выполняется SendMailErrorEventHandler.The OnSendMailError method also allows derived classes to handle the event, instead of this being done by the SendMailErrorEventHandler. Это предпочтительная методика для обработки события в классе, который является производным от ChangePassword или CreateUserWizard.This is the preferred technique for handling the event in a class that is derived from ChangePassword or CreateUserWizard.

Дополнительные сведения об обработке событий см. в разделе Server, обработка событий в страниц веб-форм ASP.NET.For more information about handling events, see Server Event Handling in ASP.NET Web Forms Pages.

Примечания для тех, кто наследует этот метод

При переопределении метода OnSendMailError(SendMailErrorEventArgs) в производном классе, не забудьте вызвать OnSendMailError(SendMailErrorEventArgs) метод базового класса, чтобы зарегистрированные делегаты получили событие.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.

Конструкторы

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

Инициализирует новый экземпляр класса SendMailErrorEventArgs.Initializes a new instance of the SendMailErrorEventArgs class.

Свойства

Exception Exception Exception Exception

Возвращает исключение, выбрасываемое почтовым SMTP-сервером при невозможности отправить сообщение электронной почты.Returns the exception thrown by an SMTP mail service when an email message cannot be sent.

Handled Handled Handled Handled

Указывает, было ли обработано исключение SMTP, содержащееся в свойстве Exception.Indicates if the SMTP exception that is contained in the Exception property has been handled.

Методы

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

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

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

Служит хэш-функцией по умолчанию.Serves as the default hash function.

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

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

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

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

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

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)

Применяется к

Дополнительно