Publicidad

ASP.NET, Envió de Mails con System.Net.Mail


Por Alex el 14/02/2007 , Comentar el artículo

Comparte este artículo:        




Algo muy común en los desarrollos web es poder enviar mails desde las páginas web que creamos o desde nuestras aplicaciones. Desde ASP.NET 2.0 disponemos de un nuevo sistema de envió de mails algo diferente a las ASP.NET 1.1. En este artículo comentarios las características de System.Net.Mail así como un ejemplo completo para poder enviar correo.


Para poder enviar mails desde ASP.NET hay que utilizar el espacio de nombres System.Net.Mail que proporciona todas los métodos y propiedades necesarias para el envió de correo. A través de un ejemplo práctico de envió podremos ver su funcionamiento. En el ejemplo se utilizaran las propiedades To, From, CC, BCC y Attachment. En el fichero web.config definimos las variables comunes para el envio de correo, como el servidor SMTP que utilizaremos, en nuestro caso local y la ruta en disco donde vamos a dejar los ficheros que adjuntemos al email.

<appSettings>
<add key="SMTP_SERVER" value="localhost"/>
<add key="PathFiles" value="D:inetpubaspdotnetarticulosEnvioMailsfiles"/>
</appSettings>

Creamos un formulario con todos los campos necesarios Para, de, copia, copia oculta, fichero, adjunto, titulo y mensaje

Imagen

y un botón de enviar y agregamos el código c# para enviar el correo.

Recuperamos del web.config los valores para el servidor SMTP y la ruta donde guardaremos los ficheros que subiremos al servidor para después adjuntar al correo.

// Recuperamos el fichero que vamos a enviar por mail
string smtpServer = System.Configuration.ConfigurationSettings.AppSettings["SMTP_SERVER"];
// Recuperamos el fichero que vamos a enviar por mail string sPathFile = System.Configuration.ConfigurationSettings.AppSettings["PathFiles"];

Creamos dos variables para tratar el fichero subido al servidor

string attch = string.Empty;
string sFile = string.Empty;

Si hemos adjuntado un fichero hacemos un upload y lo guardamos en disco.

if (File1.PostedFile.FileName != "") {
  sFile = File1.PostedFile.FileName;
  // Extraemos el nombre del fichero, sin la ruta de nuestro disco
  sFile = System.IO.Path.GetFileName(sFile);
  File1.PostedFile.SaveAs(sPathFile + "" + sFile);
  attch = sPathFile + "" + sFile;
}

Creamos un objeto de tipo MailMessage que es el que contiene todas las propiedades y métodos para procesar el envio. Y asignamos los datos que vienen del formulario a cada campo.

MailMessage mail = new MailMessage();

Email PARA (FROM) quien va dirigido el mensaje.

mail.From = new MailAddress(txtDe.Text.ToString());

Email DE (TO) quien lo envia

mail.To.Add(txtPara.Text.ToString());

Si hay email que van en copia CC, y si hay emails en copia oculta BCC

if (txtCopia.Text.ToString() != String.Empty)
  mail.CC.Add(txtCopia.Text.ToString());
if (txtBCC.Text.ToString() != String.Empty)
  mail.Bcc.Add(txtBCC.Text.ToString());

Titulo del mensaje

mail.Subject = txtTitulo.Text;

Texto del mensaje

mail.Body = txtTexto.Text;

Si el mensaje es con formato HTML o no, True = HTML, False = NO HTML

mail.IsBodyHtml = true;

La prioridad del mensaje, en este caso normal

mail.Priority = MailPriority.Normal;

Si hay un fichero adjunto lo añadimos al mail.

if (attch != string.Empty) {
 mail.Attachments.Add(new Attachment(attch));
}

Una vez tenemos todos los datos del mail creamos un objeto SMTP para enviar el mail

SmtpClient smtpMail = new SmtpClient(smtpServer);

Enviamos el correo, si hay algun error , éste seraá devuelto en SmtpException.

try {
 smtpMail.Send(mail);
}
catch (SmtpException ex) {
 string msg = ex.Message;
}

Como podemos comprobar es bastante sencillo crear correo desde .NET, las propiedades From, CC, BCC y Attachments son colecciones por lo que nos limitamos a una dirección de mail o un adjunto sino que se pueden procesar varios. Si quisiéramos poner mas copias lo haríamos de la siguiente forma:

mail.CC.Add(usuario@dominio.com);
mail.CC.Add(usuario2@dominio.com);
mail.CC.Add(usuario3@dominio.com);

Nota: Es posible que si probais en local con Windows XP os salga un error a la hora de enviar los mensajes:

"Unable to send to all recipients." O "Mailbox unavailable. The server response was: 5.7.1 Unable to relay for usuario@dominio.com"

Esto sucede porque el SMTP del IIS del Windows XP puede tener cerrado el relay de correo, en este caso solo hay que abrilo par hacer las pruebas y despues volver a cerrarlo.

Para abrilo hay que ir al IIS, a SMTP y con el boton derecho seleccionamos propiedades y despues el tab Access

Imagen

hay pulsamos el boton relay y en la ventana que sale seleccionamos el segundo radio button (“All Except the list below”).

Imagen

Enlaces relacionadas:

Código fuente 

Saludos
Alex


Si te ha gustado el artículo compartelo en:        


Publicidad

También puede interesarte:

Instalar .NET Core en Ubuntu

Instalar .NET Core en Ubuntu

Por Alex, el 07/02/2020

Limpiar datos de un combobox en winforms.

Limpiar datos de un combobox en winforms.

Por Alex, el 23/03/2010

Crear, copiar y borrar bases de datos SQL Server desde c#.

Crear, copiar y borrar bases de datos SQL Server desde c#.

Por Alex, el 07/03/2010

Escribir en un excel desde c#.

Escribir en un excel desde c#.

Por Alex, el 04/03/2010

Llenar un Repeater o DataList con un DataTable.

Llenar un Repeater o DataList con un DataTable.

Por Alex, el 29/12/2008

El evento SelectedIndexChanged no funciona

El evento SelectedIndexChanged no funciona

Por Alex, el 26/12/2008


Añadir un comentarios:

Nombre:
Email: (no se publica el email)




SIGUENOS EN

ARCHIVO

Publicidad

.