EmbeddedMailObject Sınıf

Tanım

sınıfı kullanılarak oluşturulmuş bir e-posta iletisine eklenecek öğeyi MailDefinition temsil eder.

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
Devralma
EmbeddedMailObject
Öznitelikler

Örnekler

Aşağıdaki kod örneği, Web denetimi kullanan ChangePassword bir ASP.NET sayfasını gösterir ve adlı SendingMailolay için SendingMail 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şağıdaki örnek kod, önceki örnek kod için ChangePasswordMail.htm dosyası olarak kullanılabilir.

Önemli

Kullanıcı hesabı adlarını veya parolalarını e-postayla göndermek olası bir güvenlik tehdididir. Email iletileri genellikle düz metin olarak gönderilir ve özel ağ "algılama" uygulamaları tarafından okunabilir. Güvenliği geliştirmek için Oturum Açma Denetimlerinin Güvenliğini Sağlama bölümünde açıklanan azaltmaları kullanın.

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

Açıklamalar

, EmbeddedMailObject posta iletisine eklemek için bir öğeyi temsil eder. Bu katıştırılmış öğeler, şirket logoları gibi görüntü dosyaları olabilir. Eklenen her öğe bir tanımlayıcı ve bir yol tarafından belirtilir.

Eklenmiş bir nesnenin e-posta ileti dosyasında doğru şekilde görüntülendiğinden emin olmak için aşağıdaki koşulların karşılanması gerekir:

  • Posta iletisi HTML biçimindedir.

  • Öğe bir görüntü dosyasıdır (.jpg, .gif, .bmp vb.).

  • özelliğinde BodyFileName belirtilen HTML biçimli gövde dosyası, aşağıdaki söz dizimini kullanarak görüntü dosyasına bir başvuru içerir:

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

Bir EmbeddedMailObject posta iletisine eklenirse ve daha önce belirtilen tüm gereksinimleri karşılamıyorsa, büyük olasılıkla posta iletisinde ek olarak görüntülenir. Bir öğeye posta iletisindeki bir tanımlayıcı tarafından başvurulur ancak ekli öğe olarak eklenmemişse, posta görüntülendiğinde bozuk bir ek olarak görünür.

, EmbeddedMailObjectsCollection tek bir posta iletisi için bir nesne koleksiyonu EmbeddedMailObject depolar. EmbeddedMailObjectsCollection, nesnesinin EmbeddedObjectsMailDefinition özelliği tarafından posta iletisini oluşturmak için kullanılır.

Katıştırılmış nesnelere izin veren posta iletileri, özelliklerini bildirimli olarak ayarlayarak aşağıdaki Web denetimlerinde MailDefinition yapılandırılabilir:

Not

ve EmbeddedMailObjectsCollection nesnelerindeki EmbeddedMailObject değerler görünüm durumunda depolanmaz. Bu, sunucunuz için yol bilgilerini bulan kötü amaçlı kullanıcılara karşı koruma sağlar.

Oluşturucular

EmbeddedMailObject()

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

EmbeddedMailObject(String, String)

Belirtilen tanımlayıcı adını ve nesnesini doldurmak için yolu kullanarak sınıfının yeni bir örneğini EmbeddedMailObject başlatır.

Özellikler

Name

sınıfıyla MailDefinition oluşturulmuş bir posta iletisine katıştırılacak öğenin tanımlayıcısı olarak kullanılan adı alır veya ayarlar.

Path

sınıfıyla MailDefinition oluşturulmuş bir posta iletisine eklemek üzere bir öğeyi almak için kullanılan yolu alır veya ayarlar.

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.