SendMailErrorEventArgs Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Denetim, denetim ve PasswordRecovery denetim gibi denetimlerin ChangePassword olayı için SendMailError
CreateUserWizard veri sağlar.
public ref class SendMailErrorEventArgs : EventArgs
public class SendMailErrorEventArgs : EventArgs
type SendMailErrorEventArgs = class
inherit EventArgs
Public Class SendMailErrorEventArgs
Inherits EventArgs
- Devralma
Ö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) |