Dos funcionalidades fundamentales para cualquier proyecto web, enviar mail y manipular el web.config

 

Cuando desarrollamos un sitio web suele ser conveniente o idóneo
guardar ciertos datos en el web.config, por ello es interesante
centralizar el acceso a los datos almacenados en dicho archivo en una
clase específica, que además podremos reutilizar en todos nuestros
proyectos web. Y qué decir de enviar mail, eso no tiene discusión
alguna, por lo que no me extenderé en este punto, sólo decirte que los
datos sobre conexión al servidor de correos los almacenaremos en el
web.config, así evitaremos colocar una cadena de texto en el código y
podremos cambiar la dirección de mail y sus parámetros desde un
formulario web.

Clase SettingsWeb

Desde esta clase podremos leer y
escribir los datos que almacenamos en el archivo web.config de nuestro
sitio web y cambiarlos. Una precisión importante es que el siguiente
código almacena los datos en texto plano, por lo que es muy
recomendable codificar los valores para mantenerlos a salvo de miradas
indiscretas y maliciosas

Previamente debemos añadir a nuestro archivo web.config las propiedades

</system.webServer>

<appSettings>

<!–ENCRIPTAR LOS VALORES SIEMPRE–>

<add key=”mail” value=”contoso@contoso.es”/>

<add key=”servidorSMTP” value=”mail.contoso.es”

<add key=”cuentaMail” value=”contoso@contoso.es”/>

<add key=”passMail” value=”contraseña”/>

</appSettings>

A continuación podemos crear la clase que manejara el appSetting

Imports System

Imports System.Configuration

Imports System.Web.Configuration

Imports Microsoft.VisualBasic

Public Class SettingsWeb

‘Devuelve los valores que necesitamos para enviar una mail

Public Function DameConfiguracionSMTP() as String()

‘Declaramos la variable que recoge los resultados

Dim returnValue() as String = {“”,””,””}

With returnValue

‘Recuperamos los valores del web.config por el valor del key

.SetValue(WebConfigurationManager.AppSettings(“servidorSMTP”),0)

.SetValue(WebConfigurationManager.AppSettings(“passMail”),1)

.SetValue(WebConfigurationManager.AppSettings(“cuentaMail”), 2)

End With

Return returnValue

End Function

‘Guardamos los datos para enviar correo electrónico en el web.config

Public Sub GuardarConfiguracionSMTP(ByVal smtp as String, _

            ByVal user as String, ByVal pass as String)

WebConfigurationManager.AppSettings(“servidorSMTP”) = smtp

WebConfigurationManager.AppSettings(“cuentaMail”) = user

WebConfigurationManager.AppSettings(“passMail”) = pass

End Function

End Class

Clase EnviarMail

Enviar correo electrónico desde nuestras aplicaciones web que tiene
gran misterio. El propio Framework 2.0 nos provee de una clase que
convierte la tarea en algo sumamente sencillo

Imports System.Net.Mail

Imports Microsoft.VisualBasic

Public Class EnviarMail

Public Function SendMail(ByVal remite As String, ByVal destinatario As String, _

                        ByVal asunto As String, ByVal mensaje As String) As Integer

‘Declaramos una instancia de la clase de acceso al web.config

Dim data As New settings

‘Recuperamos los datos necesarios para enviar un mail

Dim mySetting() As String = data.DameConfiguracionSMTP

‘Estraermos los valores de setting para clarificar el código

Dim servidor As String = mySetting.GetValue(0)

Dim user As String = mySetting.GetValue(1)

Dim pass As String = mySetting.GetValue(2)

‘Creamos un mensaje de correo electrónico

Dim correo As New MailMessage(remite, destinatario, asunto, mensaje)

‘Declaramos una variable que nos informe del resultado de la operacion

Dim status As Integer = Nothing

‘Controlamos los posibles errores que puedan surgir al enviar el correo

Try

‘Declaramos la clase que se encargara de gestionar el envio con el servidor

Dim carrier As New SmtpClient

carrier.UseDefaultCredentials = False

‘Le pasamos las credenciales

carrier.Credentials = New Net.NetworkCredential(user, pass)

‘Asignamos el puerto

carrier.Port = 25

‘Asignamos el servidor

carrier.Host = servidor

‘Escogemos el método de envio

carrier.DeliveryMethod = SmtpDeliveryMethod.Network

‘Enviamos el correo

carrier.Send(correo)

‘Si hemos llegado ha este punto suponemos el éxito

status = 1

Catch ex As Exception

MsgBox(“Error: ” & ex.Message)

‘Se ha producido un error y asignamos un valor para informar

status = 0

End Try

‘Devolvemos el resultado de la operación

Return status

End Function

End Class

Un comentario en “Dos funcionalidades fundamentales para cualquier proyecto web, enviar mail y manipular el web.config”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *