Este script te permitirá enviar un correo electrónico sin necesidad de visitar algún servicio web exclusivo para emails como por ejemplo Hotmail o Gmail.
Para este ejemplo se estará utilizando el IDE Visual Studio y crearemos una solución de tipo consola en el lenguaje de C# con el Framework .NET que deseemos utilizar. Vamos a necesitar dos nombres de espacio adicionales aparte de los que ya nos incluye por defecto nuestra solución de C# los cuales son System.Net.Mail (para nuestros objetos de tipo correo) y System.Net (para nuestros objetos de tipo credenciales).
Primero declaramos nuestras variables en este caso (usuario = nuestro correo electrónico, contraseña = nuestra contraseña, destinatario = el correo al queremos enviarle el mensaje, asunto = asunto del correo y Mensaje = cuerpo del mensaje, todo lo que queremos enviar en nuestro email), en este caso todas son de tipo string, después tendremos que imprimir y capturar cadenas de texto, esto para poder asignarles un valor a nuestras variables como se muestra en el siguiente código:
using System; using System.Net.Mail; using System.Net; namespace Send_Email { class SendEmail { static void Main(string[] args) { string usuario,contraseña,destinatario,asunto,mensaje; Console.WriteLine("\t\t----------------------------------------"); Console.WriteLine("\t\t\tEnviar Correo Electronico"); Console.WriteLine("\t\t----------------------------------------"); Console.WriteLine("\n"); Console.Write("\t\tIngresa tu correo electornico: "); usuario = Console.ReadLine(); Console.Write("\t\tIngresa tu password: "); contraseña = Console.ReadLine(); Console.Write("\t\tDestinatario: "); destinatario = Console.ReadLine(); Console.Write("\t\tAsunto: "); asunto = Console.ReadLine(); Console.Write("\t\tMensaje: "); mensaje = Console.ReadLine();
Ahora vamos a construir nuestros objetos para nuestro correo
Todas estas variables nos van a servir para poder crear nuestro objeto de tipo Email, para el cual necesitamos acceder a la clase MailMessage la cuál recibe como argumentos cuatro variables de las cinco que acabamos de inicializar hace un momento, a mi objeto de tipo MailMessage le he asignado el nombre de correo, pues esta clase representa un mensaje de correo electrónico que puede ser enviado a través de la clase SmtpClient.
Tenemos que crear nuestro objeto de tipo SmtpClient el cual yo le he asignado el nombre servidor, este objeto al momento de instanciarlo recibe dos argumentos, él primero una cadena de texto en la cual especificamos el nombre de host al cual vamos a conectarnos que en este caso es el de Hotmail y el segundo es de tipo int, el número del puerto por el cual nos vamos a conectar al servidor, este puede variar.
Para finalizar de construir nuestros objetos para el correo, necesitamos enviarle a nuestro objeto servidor nuestras credenciales para loguearnos en nuestro correo electrónico y poder tener acceso, para eso necesitamos crear un objeto con la clase NetworkCredential que recibe como argumento dos cadenas de texto una para el usuario y otra para la contraseña, entonces nadamos colocamos nuestras variables usuario y contraseña.
MailMessage correo = new MailMessage(usuario, destinatario, asunto, mensaje); SmtpClient servidor = new SmtpClient("smtp.live.com", NetworkCredential credenciales = new NetworkCredential(usuario,contraseña); servidor.Credentials = credenciales; servidor.EnableSsl = true;
Ya hemos creado nuestro objeto de tipo credenciales solo falta enviárselo a nuestro objeto de tipo SmtpClient eso lo hacemos asignadole al atributo SmtpClient.Credentials nuestro objeto NetworkCredential, en mi caso le he asignado el nombre de credenciales.
Un detalle importante es habilitar la seguridad SLL para que nuestro correo pueda ser entregado de manera segura, si no, al momento de ejecutar nuestro script nos arrojara un error mencionando que el servidor requiere una conexión segura, de igual manera es muy sencillo solo accedemos al atributo Ssl de nuestro objeto SmtpClient indicándole que su valor será verdadero (true).
Ahora solo falta enviar nuestro correo
Encerrando en un bloque de try-catch agregue las siguientes líneas de código:
try { servidor.Send(correo); Console.WriteLine("\t\tCorreo enviado de manera exitosa"); correo.Dispose(); } catch (Exception ex) { Console.WriteLine(ex.Message); }
Primero accedemos al método Send() de nuestro objeto servidor el cual toma de argumento un objeto de tipo Email, esté ya lo hemos creado, entonces solo le pasamos como argumento nuestro objeto correo, este método se encargar de realizar la conexión al servidor y mandar nuestro correo, después imprimimos un mensaje para notificar que el correo se ha enviado y por ultimo solo liberamos los recursos consumidos por nuestros objetos.
¿Y para qué sirve el try-catch?
Este bloque try-catch es para que nuestro programa no se detenga en tiempo de ejecución, en dado caso de que haya algún error, nuestro script nos avisara cuál fue el posible error, por ejemplo supongamos que ya capturaste los datos del cuerpo del correo electrónico a enviar, pero en uno de ellos te equivocaste , por ejemplo el correo al que se lo enviaste no existe o colocaste mal tu contraseña, entonces se interrumpirá el programa y no ejecutará las siguientes líneas de código, porqué lo que hace el bloque try es intentar ejecutar las líneas de código dentro de su bloque y si hay algún error se interrumpe el proceso en donde se generó el error y pasa directamente al bloque catch en donde se ejecutan otras líneas de código, en mi caso lo único que hice fue imprimir el mensaje de la excepción que se generé, es decir, el error que se haya generado.
Este es un ejemplo que arroja un error, pero si tu ejecutas el script con lo datos correctos verás que podras enviar correos con tu propio script 😉