MailDefinition Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Permite un control para crear mensajes de correo electrónico a partir de archivos de texto o cadenas. Esta clase no puede heredarse.
public ref class MailDefinition sealed : System::Web::UI::IStateManager
[System.ComponentModel.Bindable(false)]
[System.ComponentModel.TypeConverter(typeof(System.Web.UI.WebControls.EmptyStringExpandableObjectConverter))]
public sealed class MailDefinition : System.Web.UI.IStateManager
[<System.ComponentModel.Bindable(false)>]
[<System.ComponentModel.TypeConverter(typeof(System.Web.UI.WebControls.EmptyStringExpandableObjectConverter))>]
type MailDefinition = class
interface IStateManager
Public NotInheritable Class MailDefinition
Implements IStateManager
- Herencia
-
MailDefinition
- Atributos
- Implementaciones
Ejemplos
En el ejemplo de código siguiente se crea un mensaje de correo electrónico de Internet desde una página de Formularios Web Forms. Puede escribir el texto del mensaje en el formulario o escribir el nombre de un archivo de texto que se va a usar como cuerpo del correo. El código define dos reemplazos de cadena para el mensaje: la lista de destinatarios del cuadro de texto To del formulario reemplazará la cadena "<%To%>" y el texto especificado en la From propiedad reemplazará la cadena "<%From%>".
En la página formularios web que genera este código, puede hacer clic en Crear correo electrónico y mostrar solo para crear un mensaje de correo electrónico y mostrar las propiedades del MailMessage objeto en la página web. Haga clic en Crear correo electrónico y envíe para mostrar el mensaje de correo electrónico en la página web y enviar el mensaje a los destinatarios mediante correo electrónico de Internet.
Importante
Este control tiene un cuadro de texto que acepta la entrada del usuario, que es una amenaza de seguridad potencial. De forma predeterminada, ASP.NET Web Pages valida que los datos proporcionados por el usuario no incluyen elementos HTML ni de script. Para más información, consulte Información general sobre los ataques mediante scripts.
<%@ page language="C#"%>
<%@ import namespace="System.Net.Mail"%>
<%@ import namespace="System.Reflection"%>
<%@ import namespace="System.Collections.Specialized"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
HtmlTable ShowMessage(System.Net.Mail.MailMessage msg)
{
HtmlTable table = new HtmlTable();
HtmlTableRow topRow = new HtmlTableRow();
HtmlTableCell fieldHeaderCell = new HtmlTableCell();
HtmlTableCell valueHeaderCell = new HtmlTableCell();
fieldHeaderCell.InnerText = "Field";
topRow.Cells.Add(fieldHeaderCell);
valueHeaderCell.InnerText = "Value";
topRow.Cells.Add(valueHeaderCell);
table.Rows.Add(topRow);
foreach(PropertyInfo p in msg.GetType().GetProperties())
{
HtmlTableRow row = new HtmlTableRow();
HtmlTableCell labelCell = new HtmlTableCell();
HtmlTableCell valueCell = new HtmlTableCell();
if (!((p.Name == "Headers") ||
(p.Name == "Fields") ||
(p.Name == "Attachments")))
{
labelCell.InnerText = String.Format("{0}",p.Name);
row.Cells.Add(labelCell);
valueCell.InnerText = String.Format("{0}",p.GetValue(msg,null));
row.Cells.Add(valueCell);
}
table.Rows.Add(row);
}
return table;
}
System.Net.Mail.MailMessage CreateMessage()
{
// <Snippet2>
MailDefinition md = new MailDefinition();
// </Snippet2>
// <Snippet3>
md.BodyFileName = sourceMailFile.Text;
// </Snippet3>
// <Snippet4>
md.CC = sourceCC.Text;
// </Snippet4>
// <Snippet5>
md.From = sourceFrom.Text;
// </Snippet5>
// <Snippet6>
md.Subject = sourceSubject.Text;
// </Snippet6>
// <Snippet10>
if (sourcePriority.SelectedValue == "Normal")
{
md.Priority = MailPriority.Normal;
}
else if (sourcePriority.SelectedValue == "High")
{
md.Priority = MailPriority.High;
}
else if (sourcePriority.SelectedValue == "Low")
{
md.Priority = MailPriority.Low;
}
// </Snippet10>
// <Snippet7>
ListDictionary replacements = new ListDictionary();
replacements.Add("<%To%>",sourceTo.Text);
replacements.Add("<%From%>", md.From);
// </Snippet7>
if (true == useFile.Checked)
{
// <Snippet8>
System.Net.Mail.MailMessage fileMsg;
fileMsg = md.CreateMailMessage(sourceTo.Text, replacements, this);
// </Snippet8>
return fileMsg;
}
else
{
// <Snippet9>
System.Net.Mail.MailMessage textMsg;
textMsg = md.CreateMailMessage(sourceTo.Text, replacements, sourceBodyText.Text, this);
// </Snippet9>
return textMsg;
}
}
void createEMail_Click(object sender, System.EventArgs e)
{
System.Net.Mail.MailMessage msg = CreateMessage();
PlaceHolder1.Controls.Add(ShowMessage(msg));
}
void sendEMail_Click(object sender, System.EventArgs e)
{
System.Net.Mail.MailMessage msg = CreateMessage();
PlaceHolder1.Controls.Add(ShowMessage(msg));
errorMsg.Text = String.Empty;
try {
SmtpClient sc = new SmtpClient();
sc.Send(msg);
}
catch (HttpException ex) {
errorMsg.Text = ex.ToString();
}
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Create an email message</title>
</head>
<body>
<form id="Form1" runat="server">
<table id="Table1" cellspacing="1"
style="padding:1; width:450px; text-align:center">
<tr>
<td align="center" colspan="3">
<h3>Create an email message</h3>
</td>
</tr>
<tr>
<td align="right">To:</td>
<td style="WIDTH: 10px">
</td>
<td>
<asp:textbox id="sourceTo" runat="server" columns="54">
</asp:textbox>
<asp:requiredfieldvalidator id="RequiredFieldValidator1"
runat="server" errormessage="*" controltovalidate="sourceTo">
</asp:requiredfieldvalidator>
</td>
</tr>
<tr>
<td align="right">Cc:</td>
<td style="WIDTH: 10px">
</td>
<td>
<asp:textbox id="sourceCC" runat="server" columns="54">
</asp:textbox> </td>
</tr>
<tr>
<td align="right">From:</td>
<td style="WIDTH: 10px">
</td>
<td>
<asp:textbox id="sourceFrom" runat="server" columns="54">
</asp:textbox>
<asp:requiredfieldvalidator id="RequiredFieldValidator2"
runat="server" errormessage="*" controltovalidate="sourceFrom">
</asp:requiredfieldvalidator>
</td>
</tr>
<tr>
<td align="right">Subject:</td>
<td style="WIDTH: 10px">
</td>
<td>
<asp:textbox id="sourceSubject" runat="server" columns="54">
</asp:textbox> </td>
</tr>
<tr>
<td align="right">
Priority</td>
<td style="WIDTH: 10px">
</td>
<td>
<asp:dropdownlist id="sourcePriority" runat="server">
<asp:listitem value="Low">Low</asp:listitem>
<asp:listitem value="Normal" selected="true">Normal
</asp:listitem>
<asp:listitem value="High">High</asp:listitem>
</asp:dropdownlist> </td>
<td>
</td>
</tr>
<tr>
<td align="right">Source:</td>
<td style="WIDTH: 10px">
</td>
<td>
<table id="Table2" cellspacing="1" cellpadding="1" width="100%">
<tr>
<td style="WIDTH: 100px">
<asp:radiobutton id="useFile" runat="server" text="Use file"
width="80px" groupname="textSource" checked="True">
</asp:radiobutton> </td>
<td style="WIDTH: 11px">
</td>
<td>
<p style="text-align:right">File name:</p>
</td>
<td>
<asp:textbox id="sourceMailFile" runat="server" columns="22">
mail.txt</asp:textbox> </td>
</tr>
<tr>
<td style="WIDTH: 100px">
<asp:radiobutton id="useText" runat="server"
text="Enter text" width="80px" height="22px"
groupname="textSource">
</asp:radiobutton> </td>
<td style="WIDTH: 11px">
</td>
<td>
</td>
<td>
</td>
</tr>
</table>
</td>
<td> </td>
</tr>
<tr>
<td align="center" colspan="3">
<asp:textbox id="sourceBodyText" runat="server" columns="51"
textmode="MultiLine" rows="15">
</asp:textbox> </td>
</tr>
<tr>
<td align="center" colspan="3">
<asp:button id="createEMail" runat="server"
text="Create email and display only"
onclick="createEMail_Click">
</asp:button>
<asp:button id="sendEMail" runat="server"
text="Create email and send">
</asp:button></td>
</tr>
</table>
<p> </p>
<p>
<asp:placeholder id="PlaceHolder1" runat="server">
</asp:placeholder>
</p>
<p>
<asp:literal id="errorMsg" runat="server">
</asp:literal>
</p>
</form>
</body>
</html>
<%@ page language="VB"%>
<%@ import namespace="System.Net.Mail"%>
<%@ import namespace="System.Reflection"%>
<%@ import namespace="System.Collections.Specialized"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
Function ShowMessage(ByVal msg As System.Net.Mail.MailMessage) As HtmlTable
Dim table As HtmlTable = New HtmlTable
Dim topRow As HtmlTableRow = New HtmlTableRow
Dim fieldHeaderCell As HtmlTableCell = New HtmlTableCell
Dim valueHeaderCell As HtmlTableCell = New HtmlTableCell
fieldHeaderCell.InnerText = "Field"
topRow.Cells.Add(fieldHeaderCell)
valueHeaderCell.InnerText = "Value"
topRow.Cells.Add(valueHeaderCell)
table.Rows.Add(topRow)
Dim p As PropertyInfo
For Each p In msg.GetType().GetProperties()
Dim row As HtmlTableRow = New HtmlTableRow
Dim labelCell As HtmlTableCell = New HtmlTableCell
Dim valueCell As HtmlTableCell = New HtmlTableCell
If (Not ((p.Name = "Headers") Or _
(p.Name = "Fields") Or _
(p.Name = "Attachments"))) Then
labelCell.InnerText = String.Format("{0}", p.Name)
row.Cells.Add(labelCell)
valueCell.InnerText = String.Format("{0}", p.GetValue(msg, Nothing))
row.Cells.Add(valueCell)
End If
table.Rows.Add(row)
Next
Return table
End Function
Function CreateMessage() As System.Net.Mail.MailMessage
' <Snippet2>
Dim md As MailDefinition = New MailDefinition
' </Snippet2>
' <Snippet3>
md.BodyFileName = sourceMailFile.Text
' </Snippet3>
' <Snippet4>
md.CC = sourceCC.Text
' </Snippet4>
' <Snippet5>
md.From = sourceFrom.Text
' </Snippet5>
' <Snippet6>
md.Subject = sourceSubject.Text
' </Snippet6>
' <Snippet10>
If sourcePriority.SelectedValue = "Normal" Then
md.Priority = MailPriority.Normal
ElseIf sourcePriority.SelectedValue = "High" Then
md.Priority = MailPriority.High
ElseIf sourcePriority.SelectedValue = "Low" Then
md.Priority = MailPriority.Low
End If
' </Snippet10>
' <Snippet7>
Dim replacements As ListDictionary = New ListDictionary
replacements.Add("<%To%>", sourceTo.Text)
replacements.Add("<%From%>", sourceFrom.Text)
' </Snippet7>
If useFile.Checked Then
' <Snippet8>
Dim fileMsg As System.Net.Mail.MailMessage
fileMsg = md.CreateMailMessage(sourceTo.Text, replacements, Me)
' </Snippet8>
Return fileMsg
Else
' <Snippet9>
Dim textMsg As System.Net.Mail.MailMessage
textMsg = md.CreateMailMessage(sourceTo.Text, replacements, sourceBodyText.Text, Me)
' </Snippet9>
Return textMsg
End If
End Function
Sub createEMail_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim msg As System.Net.Mail.MailMessage = CreateMessage()
PlaceHolder1.Controls.Add(ShowMessage(msg))
End Sub
Sub sendEMail_Click(ByVal sender As Object, ByVal e As EventArgs)
Dim msg As System.Net.Mail.MailMessage = CreateMessage()
PlaceHolder1.Controls.Add(ShowMessage(msg))
Try
Dim sc As SmtpClient
sc = New SmtpClient()
sc.Send(msg)
Catch ex As Exception
errorMsg.Text = ex.ToString()
End Try
End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Create an email message</title>
</head>
<body>
<form id="Form1" runat="server">
<table id="Table1" cellspacing="1"
style="padding:1; width:450px; text-align:center">
<tr>
<td align="center" colspan="3">
<h3>Create an email message</h3>
</td>
</tr>
<tr>
<td align="right">To:</td>
<td style="WIDTH: 10px">
</td>
<td>
<asp:textbox id="sourceTo" runat="server" columns="54">
</asp:textbox> <asp:requiredfieldvalidator
id="RequiredFieldValidator1" runat="server" errormessage="*"
controltovalidate="sourceTo">
</asp:requiredfieldvalidator>
</td>
</tr>
<tr>
<td align="right">Cc:</td>
<td style="WIDTH: 10px">
</td>
<td>
<asp:textbox id="sourceCC" runat="server" columns="54">
</asp:textbox> </td>
</tr>
<tr>
<td align="right">From:</td>
<td style="WIDTH: 10px">
</td>
<td>
<asp:textbox id="sourceFrom" runat="server" columns="54">
</asp:textbox> <asp:requiredfieldvalidator
id="RequiredFieldValidator2" runat="server" errormessage="*"
controltovalidate="sourceFrom">
</asp:requiredfieldvalidator>
</td>
</tr>
<tr>
<td align="right">
Priority</td>
<td style="WIDTH: 10px">
</td>
<td>
<asp:dropdownlist id="sourcePriority" runat="server">
<asp:listitem value="Low">Low</asp:listitem>
<asp:listitem value="Normal" selected="true">Normal</asp:listitem>
<asp:listitem value="High">High</asp:listitem>
</asp:dropdownlist> </td>
<td>
</td>
</tr>
<tr>
<td align="right">Subject:</td>
<td style="WIDTH: 10px">
</td>
<td>
<asp:textbox id="sourceSubject" runat="server" columns="54">
</asp:textbox> </td>
</tr>
<tr>
<td align="right">Source:</td>
<td style="WIDTH: 10px">
</td>
<td>
<table id="Table2" cellspacing="1" cellpadding="1" width="100%">
<tr>
<td style="WIDTH: 100px">
<asp:radiobutton id="useFile" runat="server"
text="Use file" width="80px" groupname="textSource"
checked="True">
</asp:radiobutton> </td>
<td style="WIDTH: 11px">
</td>
<td>
<p style="text-align:right">File name:</p>
</td>
<td>
<asp:textbox id="sourceMailFile" runat="server" columns="22">
mail.txt</asp:textbox> </td>
</tr>
<tr>
<td style="WIDTH: 100px">
<asp:radiobutton id="useText" runat="server"
text="Enter text" width="80px" height="22px"
groupname="textSource">
</asp:radiobutton> </td>
<td style="WIDTH: 11px">
</td>
<td>
</td>
<td>
</td>
</tr>
</table>
</td>
<td> </td>
</tr>
<tr>
<td align="center" colspan="3">
<asp:textbox id="sourceBodyText" runat="server" columns="51"
textmode="MultiLine" rows="15">
</asp:textbox> </td>
</tr>
<tr>
<td align="center" colspan="3">
<asp:button id="createEMail" runat="server"
text="Create email and display only" onclick="createEMail_Click">
</asp:button>
<asp:button id="sendEMail" runat="server" text="Create email and send">
</asp:button></td>
</tr>
</table>
<p> </p>
<p>
<asp:placeholder id="PlaceHolder1" runat="server">
</asp:placeholder> </p>
<p>
<asp:literal id="errorMsg" runat="server">
</asp:literal></p>
</form>
</body>
</html>
Comentarios
Los controles pueden usar la MailDefinition clase para crear un MailMessage objeto a partir de un archivo de texto o una cadena que contenga el cuerpo del mensaje de correo electrónico. Use la clase para simplificar la MailDefinition creación de mensajes de correo electrónico predefinidos que un control envíe. Si desea enviar correo electrónico que no use un control, consulte la System.Net.Mail clase .
Puede realizar sustituciones de texto en el cuerpo del mensaje de correo electrónico pasando al CreateMailMessage método una IDictionary instancia que asigna cadenas a sus reemplazos.
El MailMessage objeto creado por la MailDefinition clase se envía mediante el Send método de la SmtpClient clase . Para poder enviar correo electrónico, debe configurar un servidor de correo SMTP en el archivo Web.config. Para obtener más información, vea el <elemento smtp> (Configuración de red).
Nota
La MailDefinition clase no admite el enlace de datos. Las propiedades de la MailDefinition clase no se pueden enlazar a datos mediante la sintaxis de <%# %>
expresión de enlace de datos.
Constructores
MailDefinition() |
Inicializa una nueva instancia de la clase MailDefinition. |
Propiedades
BodyFileName |
Obtiene o establece el nombre del archivo que contiene texto para el cuerpo del mensaje de correo electrónico. |
CC |
Obtiene o establece una lista separada por comas de direcciones de correo electrónico para enviar una copia (CC) del mensaje. |
EmbeddedObjects |
Obtiene una colección de instancias de elementos EmbeddedMailObject, que suelen usarse para insertar imágenes en un objeto MailDefinition antes de enviar un correo electrónico a un usuario. |
From |
Obtiene o establece la dirección de correo electrónico del remitente del mensaje. |
IsBodyHtml |
Obtiene o establece un valor que indica si el cuerpo del correo electrónico es HTML. |
Priority |
Obtiene o establece la prioridad del mensaje de correo electrónico. |
Subject |
Obtiene o establece la línea de asunto del mensaje de correo electrónico. |
Métodos
CreateMailMessage(String, IDictionary, Control) |
Crea un mensaje de correo electrónico a partir de un archivo de texto para enviarlo por SMTP (Protocolo simple de transferencia de correo). |
CreateMailMessage(String, IDictionary, String, Control) |
Crea un mensaje de correo electrónico con reemplazos a partir de un archivo de texto para enviarlo por SMTP (Protocolo simple de transferencia de correo). |
Equals(Object) |
Determina si el objeto especificado es igual que el objeto actual. (Heredado de Object) |
GetHashCode() |
Sirve como la función hash predeterminada. (Heredado de Object) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
MemberwiseClone() |
Crea una copia superficial del Object actual. (Heredado de Object) |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
Implementaciones de interfaz explícitas
IStateManager.IsTrackingViewState |
Obtiene un valor que indica si el control de servidor está guardando los cambios realizados en su estado de vista. |
IStateManager.LoadViewState(Object) |
Restaura la información de estado de vista de una solicitud de página anterior guardada por el método SaveViewState(). |
IStateManager.SaveViewState() |
Guarda los cambios realizados en el estado de vista del control de servidor desde que la página volvió a publicarse en el servidor. |
IStateManager.TrackViewState() |
Origina el seguimiento de los cambios del estado de vista del control de servidor de manera que se puedan almacenar en el objeto StateBag del control de servidor. |