EmbeddedMailObjectsCollection 类   
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示有序的 EmbeddedMailObject 对象集。
public ref class EmbeddedMailObjectsCollection sealed : System::Collections::CollectionBase
	public sealed class EmbeddedMailObjectsCollection : System.Collections.CollectionBase
	type EmbeddedMailObjectsCollection = class
    inherit CollectionBase
	Public NotInheritable Class EmbeddedMailObjectsCollection
Inherits CollectionBase
		- 继承
 
示例
下面的代码示例演示了一个使用 ChangePassword Web 控件的 ASP.NET 页,并包含名为 SendingMail的事件的SendingMail事件处理程序。 代码示例假定 ASP.NET 网站已配置为使用成员身份和窗体身份验证 ASP.NET,并且已创建名称和密码已知的用户。 有关详细信息,请参阅 如何:实现简单表单身份验证。
如果密码更改成功,事件处理程序中的 SendingMail 代码会尝试向用户发送电子邮件以确认更改。 必须已在服务器上配置 SMTP 才能使此代码示例正常工作。 有关如何配置 SMTP 服务器的信息,请参阅 如何:在 IIS 6.0 中安装和配置 SMTP 虚拟服务器。 就此示例而言,无需配置 SMTP 服务器;构造示例是为了测试发送电子邮件失败。
如果邮件服务器配置不正确或发生其他错误,并且无法发送电子邮件, SendMailError 则调用 函数。 向用户显示一条消息。 此外,将事件记录到 Windows 应用程序事件日志中,假设已存在名为 MySamplesSite 的事件源。 请参阅下面的代码示例来创建指定的事件源。 有关创建事件源的详细信息,请参阅 ASP.NET Web 窗体页中的服务器事件处理。 对象的 Handled 属性 SendMailErrorEventArgs 设置为 以 true 指示已处理错误。
<%@ 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 的事件源添加到应用程序日志,请使用以下代码示例。 必须存在此事件源,第一个代码示例才能正常工作。 以下代码示例需要管理员权限。
#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 文件。
重要
通过电子邮件发送用户帐户名或密码是潜在的安全威胁。 电子邮件通常以纯文本形式发送,可由特殊网络“探查”应用程序读取。 若要提高安全性,请使用 保护登录控件中所述的缓解措施。
<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="cid:LoginGif" alt="Log In" />  
  </a>   
  </p>  
  <p>  
  Please read our attached Privacy Notice.  
  </p>  
</form>  
</body>  
</html>  
	注解
存储 EmbeddedMailObjectsCollection 对将嵌入电子邮件中的项目的引用。 嵌入项可以是公司徽标等图像文件。 EmbeddedMailObjectsCollection由 EmbeddedObjects 对象的 属性MailDefinition使用 。
允许嵌入对象的电子邮件可通过声明方式设置其属性,在以下 Web 控件中配置:MailDefinition
注意
和 EmbeddedMailObjectsCollection 对象中的EmbeddedMailObject值不存储在视图状态中。 这可以防止恶意用户发现服务器的路径信息。
构造函数
| EmbeddedMailObjectsCollection() | 
		 初始化 EmbeddedMailObjectsCollection 类的新实例。  | 
        	
属性
| Capacity | 
		 获取或设置 CollectionBase 可包含的元素数。 (继承自 CollectionBase) | 
        	
| Count | 
		 获取 CollectionBase 实例中包含的元素数。 不能重写此属性。 (继承自 CollectionBase) | 
        	
| InnerList | 
		 获取一个 ArrayList,它包含 CollectionBase 实例中元素的列表。 (继承自 CollectionBase) | 
        	
| Item[Int32] | 
		 返回一个 EmbeddedMailObjectsCollection 中的某个特定元素,该元素由其位置来标识。  | 
        	
| List | 
		 获取一个 IList,它包含 CollectionBase 实例中元素的列表。 (继承自 CollectionBase) | 
        	
方法
显式接口实现
| ICollection.CopyTo(Array, Int32) | 
		 从目标数组的指定索引处开始将整个 CollectionBase 复制到兼容的一维 Array。 (继承自 CollectionBase) | 
        	
| ICollection.IsSynchronized | 
		 获取一个值,该值指示是否同步对 CollectionBase 的访问(线程安全)。 (继承自 CollectionBase) | 
        	
| ICollection.SyncRoot | 
		 获取可用于同步对 CollectionBase 的访问的对象。 (继承自 CollectionBase) | 
        	
| IList.Add(Object) | 
		 将对象添加到 CollectionBase 的结尾处。 (继承自 CollectionBase) | 
        	
| IList.Contains(Object) | 
		 确定 CollectionBase 是否包含特定元素。 (继承自 CollectionBase) | 
        	
| IList.IndexOf(Object) | 
		 搜索指定的 Object,并返回整个 CollectionBase 中第一个匹配项的从零开始的索引。 (继承自 CollectionBase) | 
        	
| IList.Insert(Int32, Object) | 
		 将元素插入 CollectionBase 的指定索引处。 (继承自 CollectionBase) | 
        	
| IList.IsFixedSize | 
		 获取一个值,该值指示 CollectionBase 是否具有固定大小。 (继承自 CollectionBase) | 
        	
| IList.IsReadOnly | 
		 获取一个值,该值指示 CollectionBase 是否为只读。 (继承自 CollectionBase) | 
        	
| IList.Item[Int32] | 
		 获取或设置指定索引处的元素。 (继承自 CollectionBase) | 
        	
| IList.Remove(Object) | 
		 从 CollectionBase 中移除特定对象的第一个匹配项。 (继承自 CollectionBase) | 
        	
扩展方法
| Cast<TResult>(IEnumerable) | 
		 将 IEnumerable 的元素强制转换为指定的类型。  | 
        	
| OfType<TResult>(IEnumerable) | 
		 根据指定类型筛选 IEnumerable 的元素。  | 
        	
| AsParallel(IEnumerable) | 
		 启用查询的并行化。  | 
        	
| AsQueryable(IEnumerable) | 
		 将 IEnumerable 转换为 IQueryable。  |