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