ChangePassword.SendMailError イベント
アセンブリ: System.Web (system.web.dll 内)

Dim instance As ChangePassword Dim handler As SendMailErrorEventHandler AddHandler instance.SendMailError, handler
public: event SendMailErrorEventHandler^ SendMailError { void add (SendMailErrorEventHandler^ value); void remove (SendMailErrorEventHandler^ value); }

SendMailError イベントは、ユーザーがパスワードを変更した後、電子メール メッセージを送信しようとしたときに、SMTP メール プロバイダが例外をスローすると発生します。このイベントが発生する最も一般的な原因は、Web.config ファイルの smtp セクションが正しくないことです。smtp セクションの詳細については、「smtp 要素 (ネットワーク設定)」を参照してください。
既定の SendMailError イベント ハンドラは、メール システムからの SMTP エラーをキャッチまたは処理しません。SendMailError イベント ハンドラでは、SendMailErrorEventArgs オブジェクトの Handled プロパティを true に設定して、エラーがユーザーに表示されないようにする必要があります。

ChangePassword Web コントロールを使用し、SendingMail という名前の SendingMail イベントのイベント ハンドラを含む ASP.NET ページを次のコード例に示します。このコード例では、ASP.NET メンバシップとフォーム認証を使用するように構成された ASP.NET Web サイトと、名前とパスワードがわかっているユーザーが作成されていることを前提にしています。詳細については、「方法 : 簡単なフォーム認証を実装する」を参照してください。
パスワードの変更に成功した場合、このコードでは、変更内容を確認するための電子メール メッセージを、SMTP を使用してユーザーに送信しようとします。これは SendingMail イベント ハンドラで行われます。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()); } } } }
上のコード例の ChangePasswordMail.htm ファイルとして、次のコード例を使用できます。
![]() |
---|
ユーザーのアカウント名またはパスワードを電子メールで送信すると、セキュリティが脆弱になる可能性があります。通常、電子メール メッセージは平文で送信され、特殊なネットワーク "スニッフィング" アプリケーションで読み取られる可能性があります。セキュリティを強化するには、「ログイン コントロールのセキュリティ保護」に記述されているリスク軽減策を使用します。 |
<html> <head><title></title></head> <body> <form> <h1>Your password for the account named "<%Username%>" has changed.</h1> <p> If you did not initiate this change, please call 1-206-555-0100. </p> <p> <a href="http://www.contoso.com/login.aspx"> <img src="https://cdn.weblio.jp/e7/img/dict/msdnc/cid:LoginGif" alt="Log In" /> </a> </p> <p> Please read our attached Privacy Notice. </p> </form> </body> </html>

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 によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


ChangePassword クラス
ChangePassword メンバ
System.Web.UI.WebControls 名前空間
OnSendMailError
ChangePassword.SendingMail イベント
その他の技術情報
ASP.NET Web ページのサーバー イベント処理
ASP.NET ログイン コントロールの概要
ASP.NET ログイン コントロールの外観のカスタマイズ
ASP.NET Web サーバー コントロール テンプレート
方法 : 匿名ユーザーおよびログイン ユーザーに異なる情報を表示する
Web サイト管理ツールの [セキュリティ] タブ
ログイン コントロールのセキュリティ保護
Web アプリケーションのセキュリティに関する基本的な対策
メンバシップのセキュリティ保護
方法 : IIS 内で SMTP 仮想サーバーをインストールおよび構成する
Weblioに収録されているすべての辞書からChangePassword.SendMailError イベントを検索する場合は、下記のリンクをクリックしてください。

- ChangePassword.SendMailError イベントのページへのリンク