Condividi tramite


EmbeddedMailObject Classe

Definizione

Rappresenta un elemento da incorporare in un messaggio di posta elettronica costruito usando la classe MailDefinition.

public ref class EmbeddedMailObject sealed
[System.ComponentModel.TypeConverter(typeof(System.Web.UI.WebControls.EmbeddedMailObject+EmbeddedMailObjectTypeConverter))]
public sealed class EmbeddedMailObject
[<System.ComponentModel.TypeConverter(typeof(System.Web.UI.WebControls.EmbeddedMailObject+EmbeddedMailObjectTypeConverter))>]
type EmbeddedMailObject = class
Public NotInheritable Class EmbeddedMailObject
Ereditarietà
EmbeddedMailObject
Attributi

Esempio

Nell'esempio di codice seguente viene illustrata una pagina di ASP.NET che usa un ChangePassword controllo Web e include un gestore eventi per l'evento SendingMail denominato SendingMail. Nell'esempio di codice si presuppone che il sito Web ASP.NET sia stato configurato per l'uso ASP.NET'appartenenza e l'autenticazione basata su form e che sia stato creato un utente il cui nome e la password sono noti all'utente. Per altre informazioni, vedere Procedura: Implementare l'autenticazione basata su moduli semplici.

Se la modifica della password ha esito positivo, il codice nel SendingMail gestore eventi tenta di inviare un messaggio di posta elettronica all'utente per confermare la modifica. Per consentire il funzionamento di questo esempio di codice, è necessario che SMTP sia già configurato nel server. Per informazioni su come configurare un server SMTP, vedere Procedura: Installare e configurare server virtuali SMTP in IIS 6.0. Ai fini di questo esempio, non è necessario configurare un server SMTP; l'esempio viene costruito per verificare se non è possibile inviare un messaggio di posta elettronica.

Se un server di posta elettronica non è configurato correttamente o si verifica un altro errore e non è possibile inviare il messaggio di posta elettronica, viene chiamata la SendMailError funzione . Viene visualizzato un messaggio all'utente. Inoltre, un evento viene registrato nel registro eventi dell'applicazione Windows presupponendo che esista già un'origine evento denominata MySamplesSite. Vedere l'esempio di codice seguente per creare l'origine evento specificata. Per altre informazioni sulla creazione di un'origine evento, vedere Gestione degli eventi server in ASP.NET pagine Web Form. La Handled proprietà dell'oggetto SendMailErrorEventArgs è impostata su true per indicare che l'errore è stato gestito.

<%@ 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>

Usare l'esempio di codice seguente se è necessario aggiungere a livello di codice l'origine evento denominata MySamplesSite al registro applicazioni. L'origine evento deve esistere affinché il primo esempio di codice funzioni correttamente. L'esempio di codice seguente richiede privilegi di amministratore.

#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

Il codice di esempio seguente può essere usato come file di ChangePasswordMail.htm per il codice di esempio precedente.

Importante

L'invio di nomi di account utente o password tramite posta elettronica è una potenziale minaccia per la sicurezza. I messaggi di posta elettronica vengono in genere inviati in testo normale e possono essere letti da applicazioni speciali di "sniffing" di rete. Per migliorare la sicurezza, usare le mitigazioni descritte in Protezione dei controlli di accesso.

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

Commenti

Rappresenta EmbeddedMailObject un elemento da incorporare in un messaggio di posta elettronica. Questi elementi incorporati possono essere file di immagine, ad esempio logo aziendali. Ogni elemento incorporato viene specificato da un identificatore e da un percorso.

Per assicurarsi che un oggetto incorporato venga visualizzato correttamente all'interno del file del messaggio di posta elettronica, è necessario soddisfare le condizioni seguenti:

  • Il messaggio di posta elettronica è in formato HTML.

  • L'elemento è un file di immagine (.jpg, .gif, .bmp e così via).

  • Il file del corpo in formato HTML specificato nella BodyFileName proprietà contiene un riferimento al file di immagine usando la sintassi seguente:

    <img src="cid:identifier" alt="Alternate Text" />.  
    

EmbeddedMailObject Se un oggetto viene aggiunto a un messaggio di posta elettronica e non soddisfa tutti i requisiti specificati in precedenza, è probabile che venga visualizzato come allegato nel messaggio di posta elettronica. Se un elemento fa riferimento a un identificatore nel messaggio di posta elettronica ma non viene incluso come elemento incorporato, viene visualizzato come allegato interrotto quando viene visualizzato il messaggio di posta elettronica.

Archivia EmbeddedMailObjectsCollection una raccolta di EmbeddedMailObject oggetti per un singolo messaggio di posta elettronica. L'oggetto EmbeddedMailObjectsCollectionEmbeddedObjects viene utilizzato dalla proprietà dell'oggetto MailDefinition per creare il messaggio di posta elettronica.

I messaggi di posta elettronica che consentono oggetti incorporati sono configurabili nei controlli Web seguenti impostandone MailDefinition le proprietà in modo dichiarativo:

Nota

I valori negli EmbeddedMailObject oggetti e EmbeddedMailObjectsCollection non vengono archiviati nello stato di visualizzazione. In questo modo si protegge da utenti malintenzionati che individuano le informazioni sul percorso per il server.

Costruttori

EmbeddedMailObject()

Inizializza una nuova istanza della classe EmbeddedMailObject.

EmbeddedMailObject(String, String)

Inizializza una nuova istanza della classe EmbeddedMailObject, utilizzando l'identificatore e il percorso specificati per inserire i dati nell'oggetto.

Proprietà

Name

Ottiene o imposta il nome utilizzato come identificatore dell'elemento da incorporare in un messaggio di posta costruito con la classe MailDefinition.

Path

Ottiene o imposta il percorso utilizzato per recuperare un elemento da incorporare in un messaggio di posta costruito con la classe MailDefinition.

Metodi

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a

Vedi anche