TOC

This article is currently in the process of being translated into Spanish (~81% done).

Misc:

Sending e-mails

Enviar e-mails con ASP.NET es bastante sencillo. El "framework"(entorno de trabajo) tiene un "namespace" (espacio de nombre) para manejar e-mails, "System.Net.Mail". En los siguientes ejemplos, usaremos dos clases de este "namespace": La clase "MailMessage" para el e-mail propiamente dicho, y la clase "SmtpClient" para enviar el e-mail.

Como deberías saber, los mails son enviados a través de un servidor SMTP, y para enviar los mails a través del entorno de trabajo de .Net, necesitarás acceso a un servidor SMTP. Si estás probando localmente, tu proveedor de internet por lo general debería tener un servidor SMTP que puedes usar, o si deseas probar uno de estos ejemplos en tu sitio web, la compañía de hosting también debería tener uno que puedas utilizar. Navega por las páginas de soporte para encontrar la dirección - por lo general es algo parecido a smtp.tu-proveedor-deinternet.com o mail.tu-proveedor-hosting.com.

Una vez tu tienes acceso a un servidor SMTP, ya estamos preparados para enviar nuestro primer e-mail. Para el primer ejemplo, todo lo que necesitamos es una página en blanco, con el siguiente código en "CodeBehind"(código por detrás):

protected void Page_Load(object sender, EventArgs e)
{
    try
    {
        MailMessage mailMessage = new MailMessage();
        mailMessage.To.Add("your.own@mail-address.com");
        mailMessage.From = new MailAddress("another@mail-address.com");
        mailMessage.Subject = "ASP.NET e-mail test";
        mailMessage.Body = "Hello world,\n\nThis is an ASP.NET test e-mail!";
        SmtpClient smtpClient = new SmtpClient("smtp.your-isp.com");
        smtpClient.Send(mailMessage);
        Response.Write("E-mail sent!");
    }
    catch(Exception ex)
    {
        Response.Write("Could not send the e-mail - error: " + ex.Message);
    }
}

Esto es todo lo que necesitas para enviar un e-mail. Creamos una nueva instancia de MailMessage, añadimos un nuevo receptor, colocamos la dirección del remitente en "From" y el asunto en "Subject", después escribimos un simple texto de prueba para el cuerpo del e-mail. Después creamos una nueva instancia de SmtpClient, con la dirección del servidor SMTP que usaremos como parámetro y después usamos la instancia para enviar el e-mail a través del ciberespacio. Todo este código está controlado por un bloque "try..catch" que actuará en el caso de que algo vaya mal.

Este fue un ejemplo muy básico, pero hay muchas otras opciones. Aquí tienes una pequeña lista de cosas interesantes:

Tu puedes añadir uno o varios ficheros, simplemente adjúntalos a la colección "Attachments"(adjuntos). En este ejemplo, adjuntamos un fichero llamado "image.jpg", localizado en el directorio raíz del sitio ASP.NET:

mailMessage.Attachments.Add(new Attachment(Server.MapPath("~/image.jpg")));

Tu puedes enviar a mas de una persona al mismo tiempo, simplemente añadiendo otra dirección a la colección "To" (para), como esto:

mailMessage.To.Add("your.own@mail-address.com");
mailMessage.To.Add("another@mail-address.com");

You can set a name for the sender - otherwise, only the e-mail address will be shown in the "From" column of the receivers e-mail client. For instance, like this:

mailMessage.From = new MailAddress("me@mail-address.com", "My Name");

You can send HTML e-mails, instead of the default plaintext mails, to use more complicated layouts. Here is a simple example:

mailMessage.IsBodyHtml = true;
mailMessage.Body = "Hello <b>world!</b>";

You can use the CC and BCC fields, just like in regular e-mail messages, like this:

mailMessage.CC.Add("me@mail-address.com");
mailMessage.Bcc.Add("me2@mail-address.com");

You can set the priority of an e-mail, like this:

mailMessage.Priority = MailPriority.High;

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!