ChangePassword.OnSendingMail(MailMessageEventArgs) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Levanta o SendingMail evento antes de uma mensagem de email ser enviada para o servidor SMTP para processamento. O servidor SMTP envia então a mensagem de email ao utilizador.
protected:
virtual void OnSendingMail(System::Web::UI::WebControls::MailMessageEventArgs ^ e);
protected virtual void OnSendingMail(System.Web.UI.WebControls.MailMessageEventArgs e);
abstract member OnSendingMail : System.Web.UI.WebControls.MailMessageEventArgs -> unit
override this.OnSendingMail : System.Web.UI.WebControls.MailMessageEventArgs -> unit
Protected Overridable Sub OnSendingMail (e As MailMessageEventArgs)
Parâmetros
Um MailMessageEventArgs objeto contendo os dados do evento.
Exemplos
O exemplo de código seguinte demonstra uma página ASP.NET que utiliza um controlo Web ChangePassword e inclui um gestor de eventos para o evento SendingMail chamado SendingMail. O exemplo de código assume que o site do ASP.NET foi configurado para usar a adesão ao ASP.NET e autenticação por formulários, e que foi criado um utilizador cujo nome e palavra-passe lhe são conhecidos. Para mais informações, veja Como: Implementar a Autenticação Simples de Formulários.
Se a alteração da palavra-passe for bem-sucedida, o código tenta usar SMTP para enviar uma mensagem de email ao utilizador a confirmar a alteração. Isto é feito no gestor deSendingMail eventos. Para informações sobre como configurar um servidor SMTP, veja Como: Instalar e Configurar Servidores Virtuais SMTP no IIS 6.0. Para efeitos deste exemplo, não é necessário configurar um servidor SMTP; O exemplo é construído para testar uma falha no envio de 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 é chamada. É exibida uma mensagem ao utilizador. Além disso, um evento é registado no registo de eventos da Aplicação Windows assumindo que já existe uma fonte de evento chamada MySamplesSite. Para mais informações sobre a criação de uma fonte de eventos, consulte Server Event Handling em ASP.NET Web Forms Pages. A Handled propriedade do SendMailErrorEventArgs objeto está definida para true indicar que o erro foi tratado.
Use o seguinte exemplo de código se precisar de adicionar programaticamente a fonte do evento chamada MySamplesSite ao registo da sua Aplicação. Esta fonte de eventos deve existir para que o primeiro exemplo de código funcione corretamente. O seguinte exemplo de código 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 seguinte código de exemplo pode ser usado como ficheiro ChangePasswordMail.htm para o código de exemplo anterior.
Importante
Enviar nomes de contas de utilizador ou palavras-passe por email é uma ameaça potencial à segurança. As mensagens de email são normalmente enviadas em texto simples e podem ser lidas por aplicações especiais de "sniffing" em rede. Para melhorar a segurança, utilize as mitigações descritas em Securing Login Controls.
<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>
Observações
Use o OnSendingMail método para modificar a mensagem de email enviada aos utilizadores após a alteração da palavra-passe. A Message propriedade do MailMessageEventArgs objeto será enviada para o servidor SMTP para processamento. Modificar as propriedades do MailMessage objeto para modificar a mensagem de email.
As mensagens de email são criadas apenas quando a BodyFileName propriedade do MailDefinition objeto especificada pela MailDefinition propriedade aponta para um nome de ficheiro válido.
Importante
Enviar nomes de contas de utilizador ou palavras-passe por email é uma ameaça potencial à segurança. As mensagens de email são normalmente enviadas em texto simples e podem ser lidas por aplicações especiais de "sniffing" em rede. Para melhorar a segurança, utilize as mitigações descritas em Securing Login Controls.
Levantar um evento invoca o gestor de eventos através de um delegado. Para mais informações, consulte Server Event Handling em ASP.NET Web Forms Pages.
O OnSendingMail método também permite que classes derivadas tratem do evento sem anexar um delegado. Esta é a técnica preferida para lidar com o evento numa classe derivada.
Notas para Herdeiros
Ao substituir o OnSendingMail(MailMessageEventArgs) método numa classe derivada, certifique-se de chamar o OnSendingMail(MailMessageEventArgs) método para a classe base para que os delegados registados recebam o evento.
Aplica-se a
Ver também
- OnBubbleEvent(Object, EventArgs)
- SendingMail
- Gestão de Eventos de Servidor em ASP.NET Páginas Web
- Visão geral dos controles de login do ASP.NET
- Personalização da aparência e comportamento dos controlos de login ASP.NET
- ASP.NET Modelos de Controlo de Servidor Web
- Como: Mostrar Informação Diferente a Utilizadores Anónimos e Iniciados
- Separador de Segurança da Ferramenta de Administração do Site
- Segurança dos Controlos de Login
- Práticas básicas de segurança para aplicativos Web
- Garantia da Adesão