Aracılığıyla paylaş


SendMailErrorEventArgs Sınıf

Tanım

Denetim, denetim ve PasswordRecovery denetim gibi denetimlerin ChangePassword olayı için SendMailErrorCreateUserWizard veri sağlar.

public ref class SendMailErrorEventArgs : EventArgs
public class SendMailErrorEventArgs : EventArgs
type SendMailErrorEventArgs = class
    inherit EventArgs
Public Class SendMailErrorEventArgs
Inherits EventArgs
Devralma
SendMailErrorEventArgs

Örnekler

Aşağıdaki kod örneği, Web denetimi kullanan ChangePassword bir ASP.NET sayfasını gösterir ve SendMailError adlı olay için SendMailError bir olay işleyicisi içerir. Kod örneği, ASP.NET Web sitesinin ASP.NET üyeliği ve Forms kimlik doğrulamasını kullanacak şekilde yapılandırıldığını ve adı ve parolası sizin için bilinen bir kullanıcı oluşturulduğunu varsayar. Daha fazla bilgi için bkz . Nasıl yapılır: Basit Form Kimlik Doğrulaması Uygulama.

Parola değişikliği başarılı olursa, olay işleyicisindeki SendingMail kod değişikliği onaylamak için kullanıcıya bir e-posta iletisi göndermeye çalışır. Bu kod örneğinin çalışması için sunucuda SMTP zaten yapılandırılmış olmalıdır. SMTP sunucusu yapılandırma hakkında bilgi için bkz . Nasıl yapılır: IIS 6.0'da SMTP Sanal Sunucularını Yükleme ve Yapılandırma. Bu örneğin amaçları doğrultusunda, smtp sunucusu yapılandırmak gerekli değildir; örnek, e-posta iletisi gönderme hatası olup olmadığını test etmek için oluşturulur.

Posta sunucusu doğru yapılandırılmamışsa veya başka bir hata oluşursa ve e-posta iletisi gönderilemiyorsa işlev SendMailError çağrılır. Kullanıcıya bir ileti görüntülenir. Ayrıca, MySamplesSite adlı bir olay kaynağının zaten var olduğu varsayımıyla Bir olay Windows Uygulaması olay günlüğüne kaydedilir. Belirtilen olay kaynağını oluşturmak için aşağıdaki kod örneğine bakın. Olay kaynağı oluşturma hakkında daha fazla bilgi için bkz. ASP.NET Web Forms Sayfalarında Sunucu Olay İşleme. Handled nesnesinin SendMailErrorEventArgs özelliği, hatanın işlendiğini belirtmek için olarak ayarlanırtrue.

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

Uygulama günlüğünüzde MySamplesSite adlı olay kaynağını program aracılığıyla eklemeniz gerekiyorsa aşağıdaki kod örneğini kullanın. İlk kod örneğinin doğru çalışması için bu olay kaynağının mevcut olması gerekir. Aşağıdaki kod örneği Yönetici ayrıcalıkları gerektirir.

#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

Açıklamalar

Nesnesi, SendMailErrorEventArgs bir e-posta iletisi denetim veya CreateUserWizard denetim tarafından gönderilemediğinde SMTP posta sağlayıcısı tarafından ChangePassword tetiklenen bir hata iletisi içerir. Böyle bir durumda nesnesi SendMailErrorEventArgs öğesine SendMailErrorEventHandlergönderilir.

Olayı işlemek için bir SendMailErrorEventHandler temsilci oluşturun. Olayı işlemek, özel durum oluştuğu halde Web uygulamanızın çalışmaya devam etmesini sağlar. Bu, e-posta iletisi göndermenin kritik olmadığı durumlarda kullanışlıdır. Örneğin, bir kullanıcı çok adımlı bir sihirbaz üzerinde çalışırken özel durum oluşursa, hatayı günlüğe kaydetmek, kullanıcıya bilgilendirici bir ileti görüntülemek ve kullanıcının sihirbazı tamamlamasına izin vermek avantajlı olabilir.

Exception Özel durumun gerçek nedenini belirlemek için özelliğini inceleyin. Özel durumun en yaygın nedeni, makine yapılandırma dosyasının <smtp> Öğesinde (Ağ Ayarları) bir yapılandırma hatasıdır. Bunun gibi bir hata genellikle bir uygulamanın geliştirilmesi ve hata ayıklanması sırasında bulunsa da, posta sunucuları üretim ortamında beklenmedik bir şekilde başarısız olabilir ve uygulamanın tamamının bu durumda başarısız olmasını isteyip istemediğinizi belirlemeniz gerekir. Aksi takdirde, olayın işlenmesi uygulamanızın devam etmesine olanak tanır.

özelliğini true özel durumun işlendiğini belirten bir sinyal olarak ayarlamanız Handled gerekir; aksi takdirde, özel durum yeniden oluşturulur ve özgün çağrı yığınını ve hata iletisini içerir.

Olay için SendMailError bir olay işleyicisi oluşturmazsanız veya bir olay işleyicisi Handled oluşturur ancak özelliğini olarak ayarlarsanız false, e-posta iletisi gönderilirken bir hata oluşursa Web uygulamanız çalışmayı durdurur ve ASP.NET bir hata iletisi görüntüler.

yöntemi ayrıca OnSendMailError türetilmiş sınıfların olayı işlemesine izin verir, bunun yerine tarafından SendMailErrorEventHandleryapılır. Bu, veya CreateUserWizardöğesinden ChangePassword türetilen bir sınıftaki olayı işlemek için tercih edilen tekniktir.

Olayları işleme hakkında daha fazla bilgi için bkz. ASP.NET Web Forms Sayfalarında Sunucu Olay İşleme.

Devralanlara Notlar

Türetilmiş bir sınıfta geçersiz kıldığınızda OnSendMailError(SendMailErrorEventArgs) , kayıtlı temsilcilerin OnSendMailError(SendMailErrorEventArgs) olayı almasını sağlamak için temel sınıfın yöntemini çağırdığınızdan emin olun.

Oluşturucular

SendMailErrorEventArgs(Exception)

SendMailErrorEventArgs sınıfının yeni bir örneğini başlatır.

Özellikler

Exception

Bir e-posta iletisi gönderilemediğinde SMTP posta hizmeti tarafından oluşan özel durumu döndürür.

Handled

özelliğinde bulunan SMTP özel durumunun işlenip işlenmediğini Exception gösterir.

Yöntemler

Equals(Object)

Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler.

(Devralındığı yer: Object)
GetHashCode()

Varsayılan karma işlevi işlevi görür.

(Devralındığı yer: Object)
GetType()

Type Geçerli örneğini alır.

(Devralındığı yer: Object)
MemberwiseClone()

Geçerli Objectöğesinin sığ bir kopyasını oluşturur.

(Devralındığı yer: Object)
ToString()

Geçerli nesneyi temsil eden dizeyi döndürür.

(Devralındığı yer: Object)

Şunlara uygulanır

Ayrıca bkz.