Поделиться через


EmbeddedMailObjectsCollection Класс

Определение

Представляет упорядоченный список объектов 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
Наследование
EmbeddedMailObjectsCollection

Примеры

В следующем примере кода показана страница ASP.NET, которая использует ChangePassword веб-элемент управления и включает обработчик событий для SendingMail события с именем SendingMail. В примере кода предполагается, что веб-сайт ASP.NET настроен для использования ASP.NET членства и проверки подлинности с помощью форм, а также что создан пользователь, имя и пароль которого вам известны. Дополнительные сведения см. в разделе Практическое руководство. Реализация простой проверки подлинности с помощью форм.

Если смена пароля выполнена успешно, код в обработчике SendingMail событий пытается отправить пользователю сообщение электронной почты для подтверждения изменения. Чтобы этот пример кода работал, необходимо уже настроить SMTP на сервере. Сведения о настройке SMTP-сервера см. в разделе Практическое руководство. Установка и настройка виртуальных серверов SMTP в IIS 6.0. Для целей этого примера не требуется настраивать SMTP-сервер; Пример создан для проверки на наличие ошибки при отправке сообщения электронной почты.

Если почтовый сервер настроен неправильно или возникает другая ошибка и сообщение электронной почты не может быть отправлено, SendMailError вызывается функция . Пользователю отобразится сообщение. Кроме того, событие регистрируется в журнале событий приложений Windows с предположением, что источник события с именем MySamplesSite уже существует. См. пример кода ниже, чтобы создать указанный источник события. Дополнительные сведения о создании источника событий см. в разделе Server Event Handling in ASP.NET Web Forms Pages. Свойство HandledSendMailErrorEventArgs объекта имеет значение , 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 &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>  

Комментарии

Хранит EmbeddedMailObjectsCollection ссылки на элементы, которые будут внедрены в сообщение электронной почты. Внедренные элементы могут быть файлами изображений, такими как логотипы компании. Используется EmbeddedMailObjectsCollection свойством EmbeddedObjectsMailDefinition объекта .

Сообщения электронной почты, разрешающие внедренные объекты, можно настроить в следующих веб-элементах управления, задав их MailDefinition свойства декларативно:

Примечание

Значения в объектах EmbeddedMailObject и EmbeddedMailObjectsCollection не хранятся в состоянии представления. Это защищает от злоумышленников, обнаруживающих сведения о пути для вашего сервера.

Конструкторы

EmbeddedMailObjectsCollection()

Инициализирует новый экземпляр класса EmbeddedMailObjectsCollection.

Свойства

Capacity

Возвращает или задает число элементов, которое может содержать список CollectionBase.

(Унаследовано от CollectionBase)
Count

Возвращает количество элементов, содержащихся в экземпляре CollectionBase. Это свойство нельзя переопределить.

(Унаследовано от CollectionBase)
InnerList

Возвращает объект ArrayList, в котором хранится список элементов экземпляра класса CollectionBase.

(Унаследовано от CollectionBase)
Item[Int32]

Возвращает конкретный элемент EmbeddedMailObjectsCollection, идентифицируемый его позицией.

List

Возвращает объект IList, в котором хранится список элементов экземпляра класса CollectionBase.

(Унаследовано от CollectionBase)

Методы

Add(EmbeddedMailObject)

Добавляет объект EmbeddedMailObject в конец коллекции EmbeddedMailObjectsCollection.

Clear()

Удаляет все объекты из экземпляра класса CollectionBase. Этот метод не может быть переопределен.

(Унаследовано от CollectionBase)
Contains(EmbeddedMailObject)

Определяет, содержит ли коллекция EmbeddedMailObjectsCollection конкретный объект EmbeddedMailObject.

CopyTo(EmbeddedMailObject[], Int32)

Копирует объекты коллекции в экземпляр одномерного массива Array, начиная с указанного индекса.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetEnumerator()

Возвращает перечислитель, перебирающий элементы экземпляра класса CollectionBase.

(Унаследовано от CollectionBase)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
IndexOf(EmbeddedMailObject)

Определяет индекс конкретного объекта EmbeddedMailObject в коллекции EmbeddedMailObjectsCollection.

Insert(Int32, EmbeddedMailObject)

Вставляет объект EmbeddedMailObject в объект EmbeddedMailObjectsCollection по указанной позиции индекса.

MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
OnClear()

Выполняет дополнительные пользовательские действия при очистке содержимого экземпляра CollectionBase.

(Унаследовано от CollectionBase)
OnClearComplete()

Осуществляет дополнительные пользовательские действия после удаления содержимого экземпляра класса CollectionBase.

(Унаследовано от CollectionBase)
OnInsert(Int32, Object)

Выполняет дополнительные пользовательские действия перед вставкой нового элемента в экземпляр класса CollectionBase.

(Унаследовано от CollectionBase)
OnInsertComplete(Int32, Object)

Выполняет дополнительные пользовательские действия после вставки нового элемента в экземпляр класса CollectionBase.

(Унаследовано от CollectionBase)
OnRemove(Int32, Object)

Осуществляет дополнительные пользовательские действия при удалении элемента из экземпляра класса CollectionBase.

(Унаследовано от CollectionBase)
OnRemoveComplete(Int32, Object)

Осуществляет дополнительные пользовательские действия после удаления элемента из экземпляра класса CollectionBase.

(Унаследовано от CollectionBase)
OnSet(Int32, Object, Object)

Выполняет дополнительные пользовательские действия перед заданием значения в экземпляре класса CollectionBase.

(Унаследовано от CollectionBase)
OnSetComplete(Int32, Object, Object)

Выполняет дополнительные пользовательские действия после задания значения в экземпляре класса CollectionBase.

(Унаследовано от CollectionBase)
OnValidate(Object)

Выполняет дополнительные пользовательские операции при проверке значения.

(Унаследовано от CollectionBase)
Remove(EmbeddedMailObject)

Удаляет первое вхождение указанного объекта EmbeddedMailObject из объекта EmbeddedMailObjectsCollection.

RemoveAt(Int32)

Удаляет элемент по указанному индексу в экземпляре класса CollectionBase. Этот метод нельзя переопределить.

(Унаследовано от CollectionBase)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

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.

Применяется к

См. также раздел