EmbeddedMailObjectsCollection Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Representa um conjunto ordenado de objetos 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
- Herança
Exemplos
O exemplo de código a seguir demonstra uma página ASP.NET que usa um ChangePassword controle Web e inclui um manipulador de eventos para o SendingMail evento chamado SendingMail
. O exemplo de código pressupõe que o site ASP.NET foi configurado para usar a associação ASP.NET e a autenticação do Forms e que um usuário foi criado cujo nome e senha são conhecidos por você. Para obter mais informações, consulte Como implementar a autenticação de formulários simples.
Se a alteração de senha for bem-sucedida, o código no SendingMail
manipulador de eventos tentará enviar uma mensagem de email ao usuário para confirmar a alteração. O SMTP já deve estar configurado no servidor para que este exemplo de código funcione. Para obter informações sobre como configurar um servidor SMTP, consulte Como instalar e configurar servidores virtuais SMTP no IIS 6.0. Para fins deste exemplo, não é necessário configurar um servidor SMTP; o exemplo é construído para testar uma falha ao enviar uma mensagem de email.
Se um servidor de email não estiver configurado corretamente ou ocorrer algum outro erro e a mensagem de email não puder ser enviada, a SendMailError
função será chamada. Uma mensagem é exibida para o usuário. Além disso, um evento é registrado no log de eventos do Aplicativo Windows com a suposição de que uma fonte de evento chamada MySamplesSite já existe. Consulte o exemplo de código abaixo para criar a origem do evento especificada. Para obter mais informações sobre como criar uma fonte de evento, consulte Tratamento de eventos do servidor em páginas ASP.NET Web Forms. A Handled propriedade do SendMailErrorEventArgs objeto é definida como true
para indicar que o erro foi tratado.
<%@ 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>
Use o exemplo de código a seguir se precisar adicionar programaticamente a fonte de eventos chamada MySamplesSite ao log do aplicativo. Essa fonte de evento deve existir para que o primeiro exemplo de código funcione corretamente. O exemplo de código a seguir requer privilégios de administrador.
#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
O código de exemplo a seguir pode ser usado como o arquivo ChangePasswordMail.htm para o código de exemplo anterior.
Importante
O envio de nomes de conta de usuário ou senhas por email é uma possível ameaça à segurança. Normalmente, as mensagens de email são enviadas em texto sem formatação e podem ser lidas por aplicativos especiais de "detecção" de rede. Para melhorar a segurança, use as mitigações descritas em Protegendo controles de logon.
<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>
Comentários
O EmbeddedMailObjectsCollection armazena referências a itens que serão inseridos em uma mensagem de email. Os itens inseridos podem ser arquivos de imagem, como logotipos da empresa. O EmbeddedMailObjectsCollection é usado pela EmbeddedObjects propriedade do MailDefinition objeto .
As mensagens de email que permitem objetos inseridos são configuráveis nos seguintes controles da Web definindo suas MailDefinition propriedades declarativamente:
Observação
Os valores nos EmbeddedMailObject objetos e EmbeddedMailObjectsCollection não são armazenados no estado de exibição. Isso protege contra usuários mal-intencionados que descobrem informações de caminho para seu servidor.
Construtores
EmbeddedMailObjectsCollection() |
Inicializa uma nova instância da classe EmbeddedMailObjectsCollection. |
Propriedades
Capacity |
Obtém ou define o número de elementos que o CollectionBase pode conter. (Herdado de CollectionBase) |
Count |
Obtém o número de elementos contidos na instância de CollectionBase. Essa propriedade não pode ser substituída. (Herdado de CollectionBase) |
InnerList |
Obtém uma ArrayList que contém a lista de elementos na instância de CollectionBase. (Herdado de CollectionBase) |
Item[Int32] |
Retorna um elemento específico de um EmbeddedMailObjectsCollection, identificado por sua posição. |
List |
Obtém uma IList que contém a lista de elementos na instância de CollectionBase. (Herdado de CollectionBase) |
Métodos
Add(EmbeddedMailObject) |
Adiciona um EmbeddedMailObject ao fim da coleção EmbeddedMailObjectsCollection. |
Clear() |
Remove todos os objetos da instância CollectionBase. Esse método não pode ser substituído. (Herdado de CollectionBase) |
Contains(EmbeddedMailObject) |
Determina se o EmbeddedMailObjectsCollection contém um EmbeddedMailObject específico. |
CopyTo(EmbeddedMailObject[], Int32) |
Copia os objetos de coleção para uma instância Array unidimensional, começando no índice especificado na matriz. |
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetEnumerator() |
Retorna um enumerador que itera pela instância CollectionBase. (Herdado de CollectionBase) |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
IndexOf(EmbeddedMailObject) |
Determina o índice de um EmbeddedMailObject específico no EmbeddedMailObjectsCollection. |
Insert(Int32, EmbeddedMailObject) |
Insere um objeto EmbeddedMailObject no objeto EmbeddedMailObjectsCollection na posição do índice especificada. |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
OnClear() |
Executa processos personalizados adicionais ao limpar o conteúdo da instância CollectionBase. (Herdado de CollectionBase) |
OnClearComplete() |
Executa processos adicionais personalizados após limpar o conteúdo da instância CollectionBase. (Herdado de CollectionBase) |
OnInsert(Int32, Object) |
Executa os processos personalizados adicionais antes de inserir um novo elemento na instância CollectionBase. (Herdado de CollectionBase) |
OnInsertComplete(Int32, Object) |
Executa processos personalizados adicionais após inserir um novo elemento na instância de CollectionBase. (Herdado de CollectionBase) |
OnRemove(Int32, Object) |
Executa processos personalizados adicionais ao remover um elemento da instância CollectionBase. (Herdado de CollectionBase) |
OnRemoveComplete(Int32, Object) |
Executa processos personalizados adicionais após remover um elemento da instância de CollectionBase. (Herdado de CollectionBase) |
OnSet(Int32, Object, Object) |
Executa processos personalizados adicionais antes de definir um valor na instância CollectionBase. (Herdado de CollectionBase) |
OnSetComplete(Int32, Object, Object) |
Executa processos personalizados adicionais após configurar um valor na instância de CollectionBase. (Herdado de CollectionBase) |
OnValidate(Object) |
Executa processos personalizados adicionais ao validar um valor. (Herdado de CollectionBase) |
Remove(EmbeddedMailObject) |
Remove a primeira ocorrência do EmbeddedMailObject especificado do EmbeddedMailObjectsCollection. |
RemoveAt(Int32) |
Remove o elemento no índice especificado da instância CollectionBase. Este método não é substituível. (Herdado de CollectionBase) |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
Implantações explícitas de interface
ICollection.CopyTo(Array, Int32) |
Copia todo o CollectionBase em um Array unidimensional compatível, começando no índice especificado da matriz de destino. (Herdado de CollectionBase) |
ICollection.IsSynchronized |
Obtém um valor que indica se o acesso à CollectionBase é sincronizado (thread-safe). (Herdado de CollectionBase) |
ICollection.SyncRoot |
Obtém um objeto que pode ser usado para sincronizar o acesso ao CollectionBase. (Herdado de CollectionBase) |
IList.Add(Object) |
Adiciona um objeto ao final do CollectionBase. (Herdado de CollectionBase) |
IList.Contains(Object) |
Determina se o CollectionBase contém um elemento específico. (Herdado de CollectionBase) |
IList.IndexOf(Object) |
Pesquisa o Object especificado e retorna o índice de base zero da primeira ocorrência dentro de todo o CollectionBase. (Herdado de CollectionBase) |
IList.Insert(Int32, Object) |
Insere um elemento no CollectionBase, no índice especificado. (Herdado de CollectionBase) |
IList.IsFixedSize |
Obtém um valor que indica se o CollectionBase tem um tamanho fixo. (Herdado de CollectionBase) |
IList.IsReadOnly |
Obtém um valor que indica se o CollectionBase é somente leitura. (Herdado de CollectionBase) |
IList.Item[Int32] |
Obtém ou define o elemento no índice especificado. (Herdado de CollectionBase) |
IList.Remove(Object) |
Remove a primeira ocorrência de um objeto específico do CollectionBase. (Herdado de CollectionBase) |
Métodos de Extensão
Cast<TResult>(IEnumerable) |
Converte os elementos de um IEnumerable para o tipo especificado. |
OfType<TResult>(IEnumerable) |
Filtra os elementos de um IEnumerable com base em um tipo especificado. |
AsParallel(IEnumerable) |
Habilita a paralelização de uma consulta. |
AsQueryable(IEnumerable) |
Converte um IEnumerable em um IQueryable. |