ChangePassword.OnSendingMail(MailMessageEventArgs) Método

Definição

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

e
MailMessageEventArgs

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 &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>

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