SendMailErrorEventArgs SendMailErrorEventArgs SendMailErrorEventArgs SendMailErrorEventArgs Class

定義

ChangePasswordCreateUserWizardPasswordRecovery など各コントロールの SendMailError イベントのデータを提供します。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

次のコード例は、@no__t 0 の Web コントロールを使用し、SendMailError という名前の @no__t イベントのイベントハンドラーを含む ASP.NET ページを示しています。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 Web サイトが 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. 詳細については、「[方法 :単純なフォーム認証 @ no__t を実装します。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 サーバーを構成する方法の詳細については、「@no__t」を参照してください。IIS 6.0 @ no__t で SMTP 仮想サーバーをインストールして構成します。For information about how to configure an SMTP server, see 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. さらに、MySamplesSite という名前のイベントソースが既に存在することを前提として、イベントが Windows アプリケーションイベントログに記録されます。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. イベントソースの作成の詳細については、「 ASP.NET Web Forms Pages」の「サーバーイベント処理」を参照してください。For more information about creating an event source, see Server Event Handling in ASP.NET Web Forms Pages. @No__t-1 オブジェクトの @no__t 0 プロパティは 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.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

注釈

@No__t-0 オブジェクトには、ChangePassword コントロールまたは @no__t 2 コントロールが電子メールメッセージを送信できない場合に SMTP メールプロバイダーによって生成されるエラーメッセージが含まれています。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. このような場合は、@no__t 0 のオブジェクトが SendMailErrorEventHandler に送信されます。In such a case, the SendMailErrorEventArgs object is sent to the SendMailErrorEventHandler.

イベントを処理する @no__t 0 デリゲートを作成します。Create a SendMailErrorEventHandler delegate to handle the event. イベントを処理すると、例外が発生した場合でも Web アプリケーションを引き続き実行できます。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.

@No__t-0 プロパティを調べて、例外の実際の原因を特定します。Examine the Exception property to determine the actual cause of the exception. 例外の最も一般的な原因は、マシン構成ファイルの< smtp @ No__t 要素 (ネットワーク設定)の構成エラーです。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.

@No__t-0 イベントのイベントハンドラーを作成しない場合、またはイベントハンドラーを作成し、Handled プロパティを @no__t に設定したままにした場合、電子メールメッセージの送信時にエラーが発生すると Web アプリケーションは実行を停止し、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.

@No__t-0 メソッドでは、@no__t によって実行されるのではなく、派生クラスでイベントを処理することもできます。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.

イベントの処理の詳細については、「 ASP.NET Web Forms Pages のサーバーイベント処理」を参照してください。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

Exception プロパティに格納されている SMTP 例外が処理されたかどうかを示します。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)

適用対象

こちらもご覧ください