Configurar web.config para enviar correos en ASP.Net
Podemos configurar en la web.config de ASP.Net un servidor de correos para ser utilizado desde C# y enviar correos electrónicos.
Antes de comenzar a escribir código en la web.config debes de tener la información del servidor de correo.
- Correo electrónico
- Contraseña
- Host de salida
- Puerto
- Si o no acepta ssl
Anteriormente vimos como enviar correos desde C# sin utilizar la web.config, en esta ocasión si la utilizaremos y veremos sus ventajas.
Configurar web.config para enviar correos
Comencemos con agregar la información necesaria en la web.config del servidor de correo que utilizaremos.
Abre el archivo web.config, al final del archivo antes de cerrar la etiqueta “configuration” coloca el código siguiente.
<system.net>
<mailSettings>
<smtp from="[email protected]">
<network enableSsl="true" host="smtp.gmail.com" port="25" userName="kyocode" password="******" defaultCredentials="false" />
</smtp>
</mailSettings>
</system.net>
- Smtp from, cuenta de correo de salida.
- Enablessl, true si el servidor admite ssl o false en caso contrario.
- Host, servidor de salida.
- Port, puerto de salida.
- Username, nombre del correo visible para el usuario.
- Password, contraseña de la cuenta de correo.
Con esta configuración tenemos listo el servidor de correo para ser utilizado desde C#.
Podría interesarte Cadena de conexión del WebConfig a SQL Sever
Utilizar servidor de correo desde C#
Abre un archivo C# y agregamos los espacios de nombres necesarios para evitar mensajes de errores.
using System.Net.Mail;
using System.Configuration;
using System.Web.Configuration;
using System.Net.Configuration;
using System.Net;
using System.Security.Cryptography.X509Certificates;
using System.Net.Security;
Ahora agregamos el código siguiente que se encarga de enviar los correos electrónicos utilizando los datos de la web.config.
MailMessage correo = new MailMessage();
Configuration c = WebConfigurationManager.OpenWebConfiguration(HttpContext.Current.Request.ApplicationPath);
MailSettingsSectionGroup settings = (MailSettingsSectionGroup)c.GetSectionGroup("system.net/mailSettings");
correo.From = new System.Net.Mail.MailAddress(settings.Smtp.From, settings.Smtp.Network.UserName, System.Text.Encoding.UTF8); //Correo de salida
correo.To.Add("[email protected]"); //Correo destino
correo.Subject = "Correo de prueba"; //Asunto
correo.Body = "Este es un correo de prueba desde c#"; //Mensaje del correo
correo.IsBodyHtml = true;
correo.Priority = MailPriority.Normal;
SmtpClient smtp = new SmtpClient();
smtp.UseDefaultCredentials = settings.Smtp.Network.DefaultCredentials;
smtp.Host = settings.Smtp.Network.Host; //Host del servidor de correo
smtp.Port = settings.Smtp.Network.Port; //Puerto de salida
smtp.Credentials = new System.Net.NetworkCredential(settings.Smtp.From, settings.Smtp.Network.Password); //Cuenta de correo
ServicePointManager.ServerCertificateValidationCallback = delegate (object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors) { return true; };
smtp.EnableSsl = settings.Smtp.Network.EnableSsl;//True si el servidor de correo permite ssl
smtp.Send(correo);
En la línea 1 y 2 se mapea la información de la web.config, en settings se almacena la información del servidor de correo.
Ubicando las líneas de código settings.Smtp podemos saber los datos que obtenemos de la web.config.
4- Agregar correo y nombre.
5- Correo destino.
6- Asunto del correo.
7- Mensaje del correo.
12- Host del correo de salida.
13- Puerto del correo de salida.
14- Autentificación del correo de salida (correo y contraseña).
16- Seguridad ssl disponible o no.
Ejecuta la aplicación, inmediatamente se envía el correo a la cuenta colocada, podrás ver algo similar a este mensaje.
Puedes ubicar los datos configurados en el código anterior señalados en color rojo.
Podría interesarte Como enviar un correo con C#
Notas: Revisa las limitaciones o condiciones de los servidores de correo para evitar problemas de spam o suspensión de salidas.