EmbeddedMailObject.Path Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá nebo nastaví cestu, která se používá k načtení položky pro vložení do e-mailové zprávy vytvořené pomocí MailDefinition třídy.
public:
property System::String ^ Path { System::String ^ get(); void set(System::String ^ value); };
public string Path { get; set; }
member this.Path : string with get, set
Public Property Path As String
Hodnota vlastnosti
Vrátí cestu k položce, kterou chcete vložit do e-mailové zprávy.
Příklady
Následující příklad kódu ukazuje ASP.NET stránku, která používá ChangePassword webový ovládací prvek a obsahuje obslužnou rutinu SendingMail události pro událost s názvem SendingMail
. Příklad kódu předpokládá, že web ASP.NET byl nakonfigurován tak, aby používal ASP.NET členství a ověřování pomocí formulářů a že byl vytvořen uživatel, jehož jméno a heslo jsou vám známy. Další informace najdete v tématu Postupy: Implementace ověřování pomocí jednoduchých formulářů.
Pokud změna hesla proběhne úspěšně, kód v obslužné rutině SendingMail
události se pokusí odeslat uživateli e-mailovou zprávu, aby změnu potvrdil. Aby tento příklad kódu fungoval, musí být na serveru již nakonfigurovaný protokol SMTP. Informace o konfiguraci serveru SMTP najdete v tématu Postupy: Instalace a konfigurace virtuálních serverů SMTP ve službě IIS 6.0. Pro účely tohoto příkladu není nutné konfigurovat server SMTP; příklad je vytvořen k testování selhání odeslání e-mailové zprávy.
Pokud poštovní server není správně nakonfigurovaný nebo dojde k jiné chybě a e-mailovou zprávu nelze odeslat, SendMailError
zavolá se funkce. Uživateli se zobrazí zpráva. Kromě toho je událost zaznamenána do protokolu událostí aplikace systému Windows s předpokladem, že zdroj události s názvem MySamplesSite již existuje. V následujícím příkladu kódu můžete vytvořit zadaný zdroj událostí. Další informace o vytváření zdroje událostí najdete v tématu Zpracování událostí serveru v ASP.NET Web Forms Pages. Vlastnost Handled objektu je nastavena SendMailErrorEventArgs na true
indikaci, že chyba byla zpracována.
<%@ 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>
Pokud potřebujete do aplikačního protokolu programově přidat zdroj událostí MySamplesSite, použijte následující příklad kódu. Tento zdroj událostí musí existovat, aby první příklad kódu fungoval správně. Následující příklad kódu vyžaduje oprávnění správce.
#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
Následující ukázkový kód lze použít jako soubor ChangePasswordMail.htm pro předchozí ukázkový kód.
Důležité
Odesílání jmen nebo hesel uživatelských účtů v e-mailové zprávě je potenciální bezpečnostní hrozbou. E-mailové zprávy se obvykle odesílají ve formátu prostého textu a dají se číst speciálními síťovými aplikacemi sniffing. Pokud chcete zlepšit zabezpečení, použijte zmírnění rizik popsaná v tématu Zabezpečení ovládacích prvků přihlášení.
<html>
<head><title></title></head>
<body>
<form>
<h1>Your password for the account named "<%Username%>" 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>
Poznámky
Vlastnost Path určuje cestu k položce, kterou chcete vložit do e-mailové zprávy vytvořené deklarativně s objektem MailDefinition . Cesta k souboru v Path souboru musí být například cesta C:\MyServer\Banner.gif. Vloženou položkou je obvykle soubor obrázku. Pokud na soubor obrázku odkazuje jeho identifikátor v e-mailové zprávě, ale není součástí zprávy, zobrazí se obrázek při zobrazení e-mailové zprávy jako poškozená příloha.
Osvědčeným postupem pro návrh přístupnosti je nastavit alternativní textovou vlastnost v e-mailové zprávě pro všechny vložené obrázky.