ChangePassword.SendingMail ChangePassword.SendingMail ChangePassword.SendingMail ChangePassword.SendingMail Event

定義

パスワードが変更されたことを伝える確認の電子メールがユーザーに送信される前に発生します。Occurs before the user is sent an email confirmation that the password has been changed.

public:
 event System::Web::UI::WebControls::MailMessageEventHandler ^ SendingMail;
public event System.Web.UI.WebControls.MailMessageEventHandler SendingMail;
member this.SendingMail : System.Web.UI.WebControls.MailMessageEventHandler 
Public Custom Event SendingMail As MailMessageEventHandler 

次のコード例は、@no__t 0 の Web コントロールを使用し、SendingMail という名前の @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 SendingMail event named SendingMail.

このコード例では、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.

パスワードの変更が成功した場合、コードは SMTP を使用して、変更を確認する電子メールメッセージをユーザーに送信しようとします。If the password change succeeds, the code attempts to use SMTP to send an email message to the user to confirm the change. これは、@ no__t-0 イベントハンドラーで行います。This is done in theSendingMail event handler. 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

前のコード例では、次のコード例を ChangePasswordMail .htm ファイルとして使用できます。The following example code can be used as the ChangePasswordMail.htm file for the previous example code.

重要

ユーザーアカウント名またはパスワードを電子メールで送信することは、セキュリティ上の脅威になる可能性があります。Sending user account names or passwords in email is a potential security threat. 通常、電子メールメッセージはプレーンテキストで送信され、特別なネットワーク "スニッフィング" アプリケーションで読み取ることができます。Email messages are typically sent in plain text and can be read by special network "sniffing" applications. セキュリティを強化するには、「ログインコントロールのセキュリティ保護」で説明されている軽減策を使用します。To improve security, use the mitigations that are described in Securing Login Controls.

<html>  
<head><title></title></head>  
<body>  
<form>  
  
  <h1>Your password for the account named &quot;<%Username%>&quot; 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="cid:LoginGif" alt="Log In" />  
  </a>   
  </p>  
  
  <p>  
  Please read our attached Privacy Notice.  
  </p>  
  
</form>  
</body>  
</html>  

注釈

@No__t 0 コントロールは、MailDefinition プロパティが送信する電子メールメッセージを定義するときに、パスワードが変更されたことを確認する電子メールメッセージを送信します。The ChangePassword control will send an email message confirming that the password has been changed when the MailDefinition property defines an email message to send.

電子メールメッセージには、ユーザー名とパスワードの自動置換フィールドが含まれています。The email message contains automatic replacement fields for the user name and password. @No__t-0 イベントを使用して、電子メールメッセージをユーザーに送信する前に変更することができます。You can use the SendingMail event to modify the email message before it is sent to the user.

重要

ユーザーアカウント名またはパスワードを電子メールで送信することは、セキュリティ上の脅威になる可能性があります。Sending user account names or passwords in email is a potential security threat. 通常、電子メールメッセージはプレーンテキストで送信され、特別なネットワーク "スニッフィング" アプリケーションで読み取ることができます。Email messages are typically sent in plain text and can be read by special network "sniffing" applications. セキュリティを強化するには、「ログインコントロールのセキュリティ保護」で説明されている軽減策を使用します。To improve security, use the mitigations that are described in Securing Login Controls.

イベントの処理の詳細については、「処理とイベントの発生」を参照してください。For more information about handling events, see Handling and Raising Events.

適用対象

こちらもご覧ください