SendMailErrorEventArgs クラス
アセンブリ: System.Web (system.web.dll 内)


SendMailErrorEventArgs オブジェクトには、ChangePassword コントロールまたは CreateUserWizard コントロールによって送信された電子メール メッセージが送信できない場合に SMTP メール プロバイダが作成するエラー メッセージが含まれています。そのような場合、SendMailErrorEventArgs オブジェクトが SendMailErrorEventHandler に渡されます。
イベントを処理するには、SendMailErrorEventHandler デリゲートを作成します。イベントを処理することで、例外が発生した場合でも Web アプリケーションの実行を継続できます。これは、電子メール メッセージの送信が重要ではないアプリーケーションで便利です。たとえば、ユーザーが複数の手順で構成されるウィザードを操作しているときに例外が発生した場合は、そのエラーを記録し、情報メッセージをユーザーに表示して、ユーザーがウィザードを完了できるようにした方が好都合です。
例外の実際の原因を確認するには、Exception プロパティを調べます。例外の最も一般的な原因は、コンピュータの構成ファイルの smtp 要素 (ネットワーク設定) の設定ミスです。このようなエラーは、通常、アプリケーションの開発およびデバッグ中に検出されますが、メール サーバーで予期しないエラーが発生することがあるため、そのような場合にアプリケーション全体をエラーにするかどうかを決定する必要があります。そうしない場合は、イベントを処理することでアプリケーションを続行できます。
Handled プロパティを true に設定して、例外が処理されたことを通知する必要があります。そうしない場合、例外が再度スローされ、その例外には元のコール スタックとエラー メッセージが含まれます。
SendMailError イベントのイベント ハンドラを作成していない場合、またはイベント ハンドラを作成しても Handled プロパティが false に設定されたままになっている場合、電子メール メッセージの送信時にエラーが発生すると、Web アプリケーションは実行を停止し、ASP.NET によってエラー メッセージが表示されます。
OnSendMailError メソッドを使用すると、SendMailErrorEventHandler の代わりに、派生クラスでイベントを処理することもできます。ChangePassword や CreateUserWizard から派生したクラスでイベントを処理する場合は、この手法が適しています。
イベント処理の詳細については、「ASP.NET Web ページのサーバー イベント処理」を参照してください。
継承時の注意 派生クラスで OnSendMailError をオーバーライドする場合は、登録されているデリゲートがイベントを受け取ることができるように、基本クラスの OnSendMailError メソッドを呼び出してください。
ChangePassword Web コントロールを使用し、SendMailError という名前の SendMailError イベントのイベント ハンドラを含む ASP.NET ページを次のコード例に示します。このコード例では、ASP.NET メンバシップとフォーム認証を使用するように構成された ASP.NET Web サイトと、名前とパスワードがわかっているユーザーが作成されていることを前提にしています。詳細については、「方法 : 簡単なフォーム認証を実装する」を参照してください。
パスワードの変更に成功した場合、SendingMail イベント ハンドラのコードは、変更内容を確認する電子メール メッセージをユーザーに送信します。このコード例を実行するには、あらかじめサーバー上で SMTP を構成しておく必要があります。SMTP サーバーを構成する方法については、「方法 : IIS 内で SMTP 仮想サーバーをインストールおよび構成する」を参照してください。この例の目的では、必ずしも SMTP サーバーを構成する必要はありません。この例は、電子メール メッセージの送信エラーをテストするために構築されています。
メール サーバーが正しく構成されていない場合、または他のエラーが発生して、電子メール メッセージを送信できない場合、SendMailError 関数が呼び出されます。ユーザーにメッセージが表示されます。さらに、MySamplesSite という名前のイベント ソースが既に存在するという前提で、Windows のアプリケーション イベント ログにイベントが記録されます。指定されたイベント ソースを作成するには、下記のコード例を参照してください。イベント ソースの作成の詳細については、「ASP.NET Web ページのサーバー イベント処理」を参照してください。エラーが処理されたことを示すために、SendMailErrorEventArgs オブジェクトの Handled プロパティは true に設定されます。
<%@ 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 > <head runat="server"> <title>ChangePassword including a SendMailError Event</title> </head> <body> <form id="form1" runat="server"> <div 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="C#" AutoEventWireup="True" %> <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 > <head runat="server"> <title>ChangePassword including a SendMailError Event</title> </head> <body> <form id="form1" runat="server"> <div 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 という名前のイベント ソースをプログラムによってアプリケーション ログに追加する必要がある場合は、次のコード例を使用します。最初のコード例を正常に動作させるには、このイベント ソースが存在する必要があります。次のコード例には、管理者特権が必要です。
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
#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()); } } } }


System.EventArgs
System.Web.UI.WebControls.SendMailErrorEventArgs


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


SendMailErrorEventArgs コンストラクタ
アセンブリ: System.Web (system.web.dll 内)


Windows 98, Windows 2000 SP4, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


SendMailErrorEventArgs クラス
SendMailErrorEventArgs メンバ
System.Web.UI.WebControls 名前空間
CreateUserWizard.SendMailError イベント
ChangePassword.SendMailError イベント
PasswordRecovery.SendMailError イベント
MailMessage
その他の技術情報
ASP.NET Web ページのサーバー イベント処理
イベントの処理と発生
Web サイト管理ツールの [アプリケーション] タブ
方法 : IIS 内で SMTP 仮想サーバーをインストールおよび構成する
SendMailErrorEventArgs プロパティ

名前 | 説明 | |
---|---|---|
![]() | Exception | 電子メール メッセージを送信できなかったときに、SMTP メール サービスによってスローされる例外を返します。 |
![]() | Handled | Exception プロパティに格納されている SMTP 例外が処理されたかどうかを示します。 |

関連項目
SendMailErrorEventArgs クラスSystem.Web.UI.WebControls 名前空間
CreateUserWizard.SendMailError イベント
ChangePassword.SendMailError イベント
PasswordRecovery.SendMailError イベント
MailMessage
その他の技術情報
ASP.NET Web ページのサーバー イベント処理イベントの処理と発生
Web サイト管理ツールの [アプリケーション] タブ
ログイン コントロールのセキュリティ保護
Web アプリケーションのセキュリティに関する基本的な対策
SendMailErrorEventArgs メソッド

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |

関連項目
SendMailErrorEventArgs クラスSystem.Web.UI.WebControls 名前空間
CreateUserWizard.SendMailError イベント
ChangePassword.SendMailError イベント
PasswordRecovery.SendMailError イベント
MailMessage
その他の技術情報
ASP.NET Web ページのサーバー イベント処理イベントの処理と発生
Web サイト管理ツールの [アプリケーション] タブ
ログイン コントロールのセキュリティ保護
Web アプリケーションのセキュリティに関する基本的な対策
SendMailErrorEventArgs メンバ
ChangePassword、CreateUserWizard、PasswordRecovery など各コントロールの SendMailError イベントのデータを提供します。
SendMailErrorEventArgs データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | Exception | 電子メール メッセージを送信できなかったときに、SMTP メール サービスによってスローされる例外を返します。 |
![]() | Handled | Exception プロパティに格納されている SMTP 例外が処理されたかどうかを示します。 |

名前 | 説明 | |
---|---|---|
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |

関連項目
SendMailErrorEventArgs クラスSystem.Web.UI.WebControls 名前空間
CreateUserWizard.SendMailError イベント
ChangePassword.SendMailError イベント
PasswordRecovery.SendMailError イベント
MailMessage
その他の技術情報
ASP.NET Web ページのサーバー イベント処理イベントの処理と発生
Web サイト管理ツールの [アプリケーション] タブ
ログイン コントロールのセキュリティ保護
Web アプリケーションのセキュリティに関する基本的な対策
- SendMailErrorEventArgsのページへのリンク