Il presente articolo è stato tradotto manualmente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale.
Traduzione
Originale
Questo argomento non è stato ancora valutato - Valuta questo argomento

Evento ChangePassword.SendMailError

Si verifica quando viene rilevato un errore SMTP durante l'invio di un messaggio di posta elettronica all'utente.

Spazio dei nomi:  System.Web.UI.WebControls
Assembly:  System.Web (in System.Web.dll)
public event SendMailErrorEventHandler SendMailError
<asp:ChangePassword OnSendMailError="SendMailErrorEventHandler" />

L'evento SendMailError si verifica quando il provider di posta SMTP genera un'eccezione durante il tentativo di inviare un messaggio di posta elettronica dopo che gli utenti hanno cambiato la propria password. Questo evento solitamente viene generato quando la sezione smtp del file Web.config non è corretta. Per ulteriori informazioni sulla sezione smtp, vedere <smtp>.

Il gestore eventi SendMailError predefinito non individua né gestisce l'errore SMTP del sistema di posta. Il gestore eventi SendMailError deve impostare la proprietà Handled dell'oggetto SendMailErrorEventArgs su true per impedire che l'errore venga visualizzato agli utenti.

Per ulteriori informazioni sulla gestione degli eventi, vedere Gestione e generazione di eventi.

Nell'esempio di codice riportato di seguito viene illustrata una pagina ASP.NET che utilizza un controllo Web ChangePassword e viene incluso un gestore eventi per l'evento SendingMail denominato SendingMail. In questo esempio di codice si presuppone che il sito Web ASP.NET sia stato configurato per utilizzare l'appartenenza ASP.NET e l'autenticazione basata su form e che sia stato creato un utente di cui si conoscono nome e password. Per ulteriori informazioni vedere Procedura: implementare l'autenticazione basata su form semplice.

Se il cambiamento della password ha esito positivo, il codice tenta di inviare tramite SMTP un messaggio di posta elettronica all'utente per confermare la modifica. Questa operazione viene effettuata nel gestore eventi SendingMail. 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 infatti è stato preparato per rilevare un eventuale errore nell'invio di un messaggio di posta elettronica.

Se il server di posta non è configurato correttamente o si verifica un altro tipo di errore e il messaggio di posta elettronica non viene inviato, verrà chiamata la funzione SendMailError e all'utente verrà visualizzato un messaggio. Verrà inoltre registrato un evento nel log eventi dell'applicazione di Windows, dando per scontato che già esista un'origine eventi denominata MySamplesSite. Vedere l'esempio di codice riportato di seguito per creare l'origine eventi specificata. Per ulteriori informazioni sulla creazione di un'origine eventi, vedere Gestione di eventi server in pagine Web ASP.NET. La proprietà Handled dell'oggetto SendMailErrorEventArgs è impostata su true a 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>


Utilizzare l'esempio di codice riportato di seguito se si desidera aggiungere a livello di codice nel registro Applicazioni l'origine eventi denominata MySamplesSite. Per consentire il corretto funzionamento del primo esempio di codice, tale origine eventi deve essere presente. Per l'esempio di codice riportato di seguito è necessario disporre dei 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());
            }
        }
    }
}


L'esempio di codice riportato di seguito può essere utilizzato come il file ChangePasswordMail.htm per l'esempio di codice precedente.

Nota sulla sicurezzaNota sulla sicurezza

L'invio di nomi o password di account utente tramite posta elettronica rappresenta un potenziale rischio per la sicurezza. I messaggi di posta elettronica infatti vengono in genere inviati come testo normale che può essere letto da speciali applicazioni di "sniffing" della rete. Per garantire una maggiore sicurezza, attenersi a quanto illustrato 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>

.NET Framework

Supportato in: 4, 3.5, 3.0, 2.0

Windows 7, Windows Vista SP1 o versione successiva, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (componenti di base del server non supportati), Windows Server 2008 R2 (componenti di base del server supportati con SP1 o versione successiva), Windows Server 2003 SP2

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Il documento è risultato utile?
(1500 caratteri rimanenti)

Aggiunte alla community

AGGIUNGI
© 2013 Microsoft. Tutti i diritti riservati.