SendMailErrorEventArgs.Exception SendMailErrorEventArgs.Exception SendMailErrorEventArgs.Exception SendMailErrorEventArgs.Exception Property

定義

電子メール メッセージを送信できなかったときに、SMTP メール サービスによってスローされる例外を返します。Returns the exception thrown by an SMTP mail service when an email message cannot be sent.

public:
 property Exception ^ Exception { Exception ^ get(); void set(Exception ^ value); };
public Exception Exception { get; set; }
member this.Exception : Exception with get, set
Public Property Exception As Exception

プロパティ値

例外を格納した Exception オブジェクト。An Exception object that contains the exception.

次のコード例に示しますを使用する ASP.NET ページ、 ChangePassword Web コントロール、およびイベント ハンドラーが含まれています、SendMailErrorという名前のイベントSendMailErrorします。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 メンバーシップとフォーム認証、および、名とパスワードがわかっているユーザーが作成されているを使用する ASP.NET Web サイトが構成されている前提としています。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. 詳細については、次を参照してください。方法: 単純なフォーム認証を実装するします。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 サーバーを構成する方法については、次を参照してください。 NIB: 方法: インストールと構成の SMTP 仮想サーバーで IIS 6.0します。For information about how to configure an SMTP server, see NIB: 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 フォーム ページのイベントの処理します。For more information about creating an event source, see Server Event Handling in ASP.NET Web Forms Pages. Handledのプロパティ、SendMailErrorEventArgsにオブジェクトが設定されている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
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

注釈

Exceptionプロパティにはによって、電子メール メッセージを送信できない場合は、SMTP メール プロバイダーによってスローされる例外が含まれています、ChangePasswordコントロールまたはCreateUserWizardします。The Exception property contains the exception that is thrown by the SMTP mail provider when an email message cannot be sent by the ChangePassword control or the CreateUserWizard. この例外の最も一般的な理由で構成エラー、 <smtp>要素 (ネットワーク設定)のマシンの構成ファイル、次の例外メッセージが生成されます。 The transport failed to connect to the server.The most common reason for this exception is a configuration error in the <smtp> Element (Network Settings) of the machine configuration file, which produces the following exception message: The transport failed to connect to the server.

ある場合、エラー、電子メール メッセージを使用してファイルを埋め込むときに、例外がスローされませんEmbeddedObjectsします。Exceptions are not thrown if there is an error in the email message when embedding a file using EmbeddedObjects. 代わりに、メール メッセージを表示すると、埋め込まれたファイルを破損が表示されます。Instead, the embedded file appears broken when the mail message is viewed.

設定する必要があります、Handledとして渡されたオブジェクト、eパラメーターのSendMailErrorEventArgstrue通知処理以外の場合、例外が表示されている、例外が再スローされ、元のコール スタックとエラー メッセージが含まれています。You must set the Handled object, passed as the e parameter of SendMailErrorEventArgs, to true to signal that the exception has been handled; otherwise, the exception is rethrown, and includes the original call stack and error message.

適用対象

こちらもご覧ください