EmbeddedMailObject クラス

定義

MailDefinition クラスを使用して構築した電子メール メッセージに埋め込まれる項目を表します。Represents an item to embed in an email message constructed using the MailDefinition class.

public ref class EmbeddedMailObject sealed
[System.ComponentModel.TypeConverter(typeof(System.Web.UI.WebControls.EmbeddedMailObject/EmbeddedMailObjectTypeConverter))]
public sealed class EmbeddedMailObject
[<System.ComponentModel.TypeConverter(typeof(System.Web.UI.WebControls.EmbeddedMailObject/EmbeddedMailObjectTypeConverter))>]
type EmbeddedMailObject = class
Public NotInheritable Class EmbeddedMailObject
継承
EmbeddedMailObject
属性

次のコード例は、 ChangePassword Web コントロールを使用し、という名前のイベントのイベントハンドラーを含む ASP.NET ページを示してい SendingMail SendingMail ます。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. 詳細については、「 方法: 単純なフォーム認証を実装する」を参照してください。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 サーバーを構成する方法については、「 方法: IIS 6.0 で 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. 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.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 preceding 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>  

注釈

は、 EmbeddedMailObject メールメッセージに埋め込む項目を表します。The EmbeddedMailObject represents an item to embed in a mail message. これらの埋め込みアイテムは、会社のロゴなどのイメージファイルにすることができます。These embedded items can be image files such as company logos. 各埋め込み項目は、識別子とパスによって指定されます。Each embedded item is specified by an identifier and a path.

埋め込みオブジェクトが電子メールメッセージファイル内に正しく表示されるようにするには、次の条件が満たされている必要があります。To ensure that an embedded object is displayed correctly within the email message file, the following conditions must be met:

  • メールメッセージは HTML 形式です。The mail message is in HTML format.

  • この項目は、イメージファイル (.jpg、.gif、.bmp など) です。The item is an image file (.jpg, .gif, .bmp, and so on).

  • プロパティで指定されている HTML 形式の本文ファイルには、 BodyFileName 次の構文を使用したイメージファイルへの参照が含まれています。The HTML-formatted body file specified in the BodyFileName property contains a reference to the image file using the following syntax:

    <img src="cid:identifier" alt="Alternate Text" />.  
    

EmbeddedMailObjectがメールメッセージに追加され、以前に指定したすべての要件を満たしていない場合は、メールメッセージの添付ファイルとして表示される可能性が高くなります。If an EmbeddedMailObject is added to a mail message and does not fulfill all of the requirements specified previously, it will most likely be displayed as an attachment in the mail message. 項目がメールメッセージの識別子によって参照されていても、埋め込みアイテムとして含まれていない場合は、メールが表示されると、破損した添付ファイルとして表示されます。If an item is referenced by an identifier in the mail message but not included as an embedded item, it will appear as a broken attachment when the mail is viewed.

は、 EmbeddedMailObjectsCollection EmbeddedMailObject 1 つのメールメッセージに対してオブジェクトのコレクションを格納します。The EmbeddedMailObjectsCollection stores a collection of EmbeddedMailObject objects for a single mail message. は、 EmbeddedMailObjectsCollection EmbeddedObjects MailDefinition メールメッセージを作成するために、オブジェクトのプロパティによって使用されます。The EmbeddedMailObjectsCollection is used by the EmbeddedObjects property of the MailDefinition object to create the mail message.

埋め込みオブジェクトを許可するメールメッセージは、プロパティを宣言によって設定することによって、次の Web コントロールで構成でき MailDefinition ます。Mail messages that allow embedded objects are configurable in the following Web controls by setting their MailDefinition properties declaratively:

注意

EmbeddedMailObjectオブジェクトとオブジェクトの値 EmbeddedMailObjectsCollection は、ビューステートに格納されません。The values in the EmbeddedMailObject and EmbeddedMailObjectsCollection objects are not stored in view state. これにより、悪意のあるユーザーがサーバーのパス情報を検出するのを防ぐことができます。This protects against malicious users discovering path information for your server.

コンストラクター

EmbeddedMailObject()

EmbeddedMailObject クラスの新しいインスタンスを初期化します。Initializes a new instance of the EmbeddedMailObject class.

EmbeddedMailObject(String, String)

識別名とオブジェクトを読み込むパスを指定して、EmbeddedMailObject クラスの新しいインスタンスを初期化します。Initializes a new instance of the EmbeddedMailObject class, using the specified identifier name and path to populate the object.

プロパティ

Name

MailDefinition クラスを使用して構築したメール メッセージに埋め込まれる項目の ID として使用する名前を取得または設定します。Gets or sets the name that is used as the identifier of the item to be embedded in a mail message constructed with the MailDefinition class.

Path

MailDefinition クラスを使用して構築したメール メッセージに埋め込む項目を取得するために使用するパスを取得または設定します。Gets or sets the path that is used to retrieve an item to embed in a mail message constructed with the MailDefinition class.

メソッド

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)
MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(継承元 Object)

適用対象

こちらもご覧ください