Enviar un mail es una de las tareas más comunes a la hora de realizar un desarrollo, independientemente del lenguaje que sea. Hoy vamos a mostrarte como realizar esta tarea con el lenguaje de programación C#, uno de los lenguajes más populares según el ranking que publicamos hace unos días. Pero este código tendrá una peculiaridad, usaremos Gmail, el servidor de correo de Google, como servidor a la hora de enviar un correo. Esto que para algunos puede considerarse extraño, para nada lo es. Yo, personalmente, uso gmail como servidor de correo aún teniendo un dominio distinto en la cuenta que utilizo habitualmente. Depender de un servidor externo no es tan raro, con eso externalizaremos servicios y podremos ahorrar costes a la hora de contratar un alojamiento.
En este tutorial os enseñaremos cómo enviar un correo en C# utilizando Gmail como servidor. Este código lo puedes aplicar en tus propios desarrollos y ahorrarte la tarea de implementarlo por tu cuenta o llamar a librerías. Ya sabéis que en programacion.net abogamos por la escritura de código como método para convertirnos en mejores programadores. Lo hemos repetido muchas veces, pero es así. Si queremos coger soltura con un lenguaje de programación determinado, debemos escribir código. Y mucho. Y que mejor ocasión para escribir código que realizar una tarea sencilla como es la de enviar un correo desde una aplicación, esta vez, usándonos del servidor de Google. ¿Estás preparado para aprender cómo enviar un correo usando Gmail en C#? ¡Pues allá vamos!
Antes que nada, declaramos el servidor smtp mediante el archivo web.config. Como sabéis, el archivo web.config es el archivo principal de opciones de configuración para una aplicación web en ASP.NET. El archivo es un documento XML que define información de configuración concerniente a la aplicación web.
<system.net>
<mailSettings>
<smtp from="[email protected]">
<network host="smtp.gmail.com"
password="your mail password" port="587" userName="your user" />
</smtp>
</mailSettings>
</system.net>
Obtenemos el servidor smtp del archivo de configuración.
var smtpSection = (SmtpSection)ConfigurationManager.GetSection("system.net/mailSettings/smtp"); string strHost = smtpSection.Network.Host; int port = smtpSection.Network.Port; string strUserName = smtpSection.Network.UserName; string strFromPass = smtpSection.Network.Password;
Proporcionamos la información de autenticación al servidor de Gmail
SmtpClient smtp = new SmtpClient(strHost, port); NetworkCredential cert = new NetworkCredential(strUserName, strFromPass); smtp.Credentials = cert; smtp.EnableSsl = true;
Creamos el contenido del correo. Para esta ocasión crearemos un contenido simple para que se vea bien el funcionamiento del script. Definimos el asunto del correo y también el contenido que se enviará que, como podéis comprobar son tres líneas de texto. Esta vez lo hemos hecho con texto plano, pero también podéis enviar código fuente sin problema alguno en que erre el desarrollo.
MailMessage msg = new MailMessage(smtpSection.From, Email); msg.Subject = "Este es el asunto"; msg.IsBodyHtml = true; msg.Body += "Texto 1 del cuerpo del correo"; msg.Body += "Texto 2 del cuerpo del correo"; msg.Body += "Texto 3 del cuerpo del correo";
Y aquí viene la parte final. Enviamos el correo con el contenido que hemos definido en la parte anterior que está dentro de la variable msg. Ejecutando esta función enviaremos el correo al email al usuario que hayamos establecido previamente:
smtp.Send(msg);
Y esto sería todo. Así enviaríamos un correo a través de Gmail con el lenguaje de programación C#. Espero que os haya gustado y, si tenéis alguna duda sobre cómo hacer alguna práctica o sobre algo en concreto sobre un lenguaje de programación, no dudes en ponerte en contacto con nosotros o escribírnoslo en los comentarios de más abajo. Sin duda alguna, crearemos un tutorial como este para que te aclares un poco más y sepas resolver todo los problemas que se te planteen.
Hablando un poco de servidores de correo. Está claro que, como tener uno propio nada, pero, ¿qué sistema de correo externo es tu preferido? A la hora de contar con una cuenta de correo de yahoo, gmail, hotmail... ¿con quién la tendrías? Indícanoslo también en los comentarios...