EmbeddedMailObject Construtores

Definição

Inicializa uma nova instância da EmbeddedMailObject classe.

Sobrecargas

Name Description
EmbeddedMailObject()

Inicializa uma nova instância da EmbeddedMailObject classe.

EmbeddedMailObject(String, String)

Inicializa uma nova instância da EmbeddedMailObject classe, usando o nome do identificador e o caminho especificados para preencher o objeto.

EmbeddedMailObject()

Inicializa uma nova instância da EmbeddedMailObject classe.

public:
 EmbeddedMailObject();
public EmbeddedMailObject();
Public Sub New ()

Observações

Para obter ou definir o identificador do item incorporado, use a propriedade Name . Para obter ou definir o caminho para o item embutido, use a Path propriedade. Ambas as propriedades devem ser definidas para incorporar com sucesso o item na mensagem de correio.

Ver também

Aplica-se a

EmbeddedMailObject(String, String)

Inicializa uma nova instância da EmbeddedMailObject classe, usando o nome do identificador e o caminho especificados para preencher o objeto.

public:
 EmbeddedMailObject(System::String ^ name, System::String ^ path);
public EmbeddedMailObject(string name, string path);
new System.Web.UI.WebControls.EmbeddedMailObject : string * string -> System.Web.UI.WebControls.EmbeddedMailObject
Public Sub New (name As String, path As String)

Parâmetros

name
String

O nome usado como identificador do item a incorporar na mensagem de correio. Para obter mais informações, veja Name.

path
String

O caminho usado para recuperar um item para incorporar na mensagem de correio. Para obter mais informações, veja Path.

Exemplos

O exemplo de código seguinte mostra um exemplo code-behind de uma página ASP.NET que utiliza um controlo ChangePassword e inclui um gestor de eventos para o evento SendingMail chamado SendingMail. Este 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 são conhecidos por si. 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 no SendingMail gestor de eventos tenta enviar uma mensagem de email ao utilizador para confirmar a alteração. O SMTP deve já estar configurado no servidor para que este exemplo de código funcione. 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.

O exemplo de código seguinte demonstra o uso de um ficheiro code-behind.

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

public partial class ChangePassword_cs_aspx : System.Web.UI.Page
{
    protected void Page_Load(Object sender, EventArgs e)
    {
        // Manually register the event-handling methods.
        ChangePassword1.SendingMail += new MailMessageEventHandler(this._SendingMail);
        ChangePassword1.SendMailError += new SendMailErrorEventHandler(this._SendMailError);

        ChangePassword1.MailDefinition.BodyFileName = "~/Attachments/ChangePasswordMail.htm";

        EmbeddedMailObject loginGif = new EmbeddedMailObject();
        loginGif.Name = "LoginGif";
        loginGif.Path = "~/Attachments/Login.gif";

        EmbeddedMailObject privacyNoticeTxt = new EmbeddedMailObject();
        privacyNoticeTxt.Name = "PrivacyNoticeTxt";
        privacyNoticeTxt.Path = "~/Attachments/PrivacyNotice.txt";

        ChangePassword1.MailDefinition.EmbeddedObjects.Add(loginGif);
        ChangePassword1.MailDefinition.EmbeddedObjects.Add(privacyNoticeTxt);
    }

    protected void _SendingMail(object sender, MailMessageEventArgs e)
    {
        Message1.Visible = true;
        Message1.Text = "Sent mail to you to confirm the password change.";

        System.Net.Mail.MailAddress from = new System.Net.Mail.MailAddress("someone@example.com", "Someone");
        System.Net.Mail.MailAddress copy = new System.Net.Mail.MailAddress("someone@example.com", "Someone");

        e.Message.From = from;
        e.Message.CC.Add(copy);
        e.Message.Subject = "Activity information for you";
        e.Message.IsBodyHtml = true;
    }

    protected void _SendMailError(object sender, SendMailErrorEventArgs e)
    {
        Message1.Visible = true;
        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.Source = "MySamplesSite";
        myLog.Log = "Application";
        myLog.WriteEntry(
          "Sending mail via SMTP failed with the following error: " +
          e.Exception.Message.ToString(),
          System.Diagnostics.EventLogEntryType.Error);

        e.Handled = true;
    }
}
Imports System.Data
Imports System.Configuration
Imports System.Web
Imports System.Web.Security
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Web.UI.HtmlControls

Partial Class ChangePassword_vb_aspx
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal Sender As Object, ByVal e As System.EventArgs)
        AddHandler ChangePassword1.SendingMail, AddressOf Me._SendingMail
        AddHandler ChangePassword1.SendMailError, AddressOf Me._SendMailError
        ChangePassword1.MailDefinition.BodyFileName = "~/Attachments/ChangePasswordMail.htm"
        ChangePassword1.MailDefinition.Cc = "someone@example.com"
        ChangePassword1.MailDefinition.From = "someone@example.com"

        Dim loginGif As New EmbeddedMailObject
        loginGif.Name = "LoginGif"
        loginGif.Path = "~/Attachments/Login.gif"

        Dim privacyNoticeTxt As New EmbeddedMailObject
        privacyNoticeTxt.Name = "PrivacyNoticeTxt"
        privacyNoticeTxt.Path = "~/Attachments/PrivacyNotice.txt"

        ChangePassword1.MailDefinition.EmbeddedObjects.Add(loginGif)
        ChangePassword1.MailDefinition.EmbeddedObjects.Add(privacyNoticeTxt)
    End Sub

    Protected Sub _SendingMail(ByVal Sender As Object, ByVal e As MailMessageEventArgs)
        Message1.Visible = True
        Message1.Text = "Sent mail to you to confirm the password change."

        e.Message.Subject = "Activity information for you"
        e.Message.IsBodyHtml = True

    End Sub

    Protected Sub _SendMailError(ByVal Sender As Object, ByVal e As SendMailErrorEventArgs)
        Message1.Visible = True
        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

End Class

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 numa mensagem de email é uma potencial ameaça à 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>

Ver também

Aplica-se a