SendMailErrorEventArgsとは? わかりやすく解説

SendMailErrorEventArgs クラス

メモ : このクラスは、.NET Framework version 2.0 で新しく追加されたものです。

ChangePassword、CreateUserWizard、PasswordRecovery など各コントロールの SendMailError イベントのデータを提供します。

名前空間: System.Web.UI.WebControls
アセンブリ: System.Web (system.web.dll 内)
構文構文

Public Class SendMailErrorEventArgs
    Inherits EventArgs
Dim instance As SendMailErrorEventArgs
public class SendMailErrorEventArgs : EventArgs
public ref class SendMailErrorEventArgs : public
 EventArgs
public class SendMailErrorEventArgs extends
 EventArgs
public class SendMailErrorEventArgs extends
 EventArgs
解説解説

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());
            }
        }
    }
}
.NET Framework のセキュリティ.NET Framework のセキュリティ
継承階層継承階層
System.Object
   System.EventArgs
    System.Web.UI.WebControls.SendMailErrorEventArgs
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照

SendMailErrorEventArgs コンストラクタ

メモ : このコンストラクタは、.NET Framework version 2.0 で新しく追加されたものです。

SendMailErrorEventArgs クラスの新しいインスタンスを初期化します。

名前空間: System.Web.UI.WebControls
アセンブリ: System.Web (system.web.dll 内)
構文構文

Dim e As Exception

Dim instance As New SendMailErrorEventArgs(e)
public SendMailErrorEventArgs (
    Exception e
)
public:
SendMailErrorEventArgs (
    Exception^ e
)
public SendMailErrorEventArgs (
    Exception e
)
public function SendMailErrorEventArgs (
    e : Exception
)

パラメータ

e

例外を格納した Exception オブジェクト。

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

SendMailErrorEventArgs プロパティ


SendMailErrorEventArgs メソッド


パブリック メソッドパブリック メソッド

プロテクト メソッドプロテクト メソッド
参照参照

関連項目

SendMailErrorEventArgs クラス
System.Web.UI.WebControls 名前空間
CreateUserWizard.SendMailError イベント
ChangePassword.SendMailError イベント
PasswordRecovery.SendMailError イベント
MailMessage

その他の技術情報

ASP.NET Web ページのサーバー イベント処理
イベントの処理と発生
Web サイト管理ツールの [アプリケーション] タブ
ログイン コントロールのセキュリティ保護
Web アプリケーションのセキュリティに関する基本的な対策

SendMailErrorEventArgs メンバ

ChangePassword、CreateUserWizard、PasswordRecovery など各コントロールの SendMailError イベントのデータを提供します。

SendMailErrorEventArgs データ型で公開されるメンバを以下の表に示します。


パブリック コンストラクタパブリック コンストラクタ
  名前 説明
パブリック メソッド SendMailErrorEventArgs SendMailErrorEventArgs クラスの新しいインスタンスを初期化します。
パブリック プロパティパブリック プロパティ
パブリック メソッドパブリック メソッド
プロテクト メソッドプロテクト メソッド
参照参照

関連項目

SendMailErrorEventArgs クラス
System.Web.UI.WebControls 名前空間
CreateUserWizard.SendMailError イベント
ChangePassword.SendMailError イベント
PasswordRecovery.SendMailError イベント
MailMessage

その他の技術情報

ASP.NET Web ページのサーバー イベント処理
イベントの処理と発生
Web サイト管理ツールの [アプリケーション] タブ
ログイン コントロールのセキュリティ保護
Web アプリケーションのセキュリティに関する基本的な対策



英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「SendMailErrorEventArgs」の関連用語

SendMailErrorEventArgsのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



SendMailErrorEventArgsのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS