Eduardo y sus cosillas del .net

Aquí se escribe y se discute de programación para trabajadores autonomos y pequeñas empresas.

This Blog

Syndication

Search

Community

Email Notifications

Archives

Referencia Microsoft

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

Published 9/11/2007 8:31 por Eduardo Ortega
Archivado en: ,,,
Comparte este post:

Comentarios

# re: Dos funcionalidades fundamentales para cualquier proyecto web, enviar mail y manipular el web.config@ Thursday, May 28, 2009 12:32 AM

Excelente, gracias por el aporte !!!

by Pamela