Colabora |
Correo con Visual Basic 2005Envío de Correo Masivo Utilizando una Base de Datos Microsoft Access 2003
Fecha: 12/Ago/2007 (11 de Agosto de 2007)
|
IntroducciónEs indudable que Visual Basic 2005 modela capacidades extraordinarias en el desarrollo de aplicaciones RAD. No hay nada que envidiarle a ningún lenguaje de programación en la actualidad para querer desarrollar lo que se nos ocurra de una forma rápida, simplificada y bien estructurada. Es indudable que las mejoras desarrolladas en Netframework 2.0 y en sus anteriores versiones por Microsoft pueden llegar hacer incontables ya que proporciona medios que permiten de una u otra forma desarrollar la solución de manera inmediata. Proporcionando mecanismos que en otras épocas serían engorrosos, complejos y con altos costos de desarrollo. Este artículo esta basado en una consulta hecha por un buen amigo, el cual me comentaba como se podría encontrar una manera de enviar correo electrónico masivamente desde Visual Basic 2005 utilizando una base de datos de correos almacenada en Microsoft Access, o en alguna otra versión de .NET de Visual Basic. El envió de correo electrónico desde Visual Basic .NET es posible mediante el uso de algunos espacios de nombres y referencias a librerías que proporciona el mismo lenguaje de programación. Su uso es extenso ya que permite no solo enviar el correo, que es en si el texto, si no también archivos adjuntos, copias y un sin número de cosas que son proporcionadas por los diferentes programas de correos electrónicos como por ejemplo Outlook Express de Microsoft o similares. Pero el hecho se encuentra en el envió de correo a diferentes destinatarios utilizando mecanismos propios de Visual Basic y que permita enviarlos con un solo clic el mismo contenido del correo, cambiando solamente un par de cosas dentro del mismo. Primeros PasosEn el menú archivo de Visual Studio 2005 hacer clic en nuevo y después en proyecto. Luego en el asistente de plantillas de formularios Windows, hacer clic en el icono de aplicaciones de Windows, ubicar el directorio de la aplicación en el lugar donde se desee. A continuación se muestran las opción de menú y el formulario de las plantillas:
Figura 1.0 Crear un proyecto Windows.
Figura 2.0 Seleccionar plantilla aplicaciones de Windows.
Figura 3.0 Describir nombre de la solución y su ubicación. Posterior a los pasos descritos anteriormente es necesario agregar las referencias de System.Managament y System.ServiceProcess dentro del proyecto, para agregar las referencias hacer clic en el menú proyecto de Visual Studio 2005 y luego seleccionar agregar referencias, se mostrara a continuación un cuadro de dialogo listando todas las referencias de .NET 2.0, posteriormente ubicar en orden alfabético las referencias anteriormente descritas y agregarlas. A continuación se muestra el contenido del proyecto denominado winAppSendMail:
Figura 4.0 Contenido del proyecto Windows.
La clase clsDatabase.vb: posee un método para ubicar la base de datos en su directorio correspondiente. El modulo publico VarPublic.vb: Posee una variable de ámbito global la cual permite en tiempo de ejecución enviar la información de conexión al objeto del mismo tipo. La carpeta Database contiene la base de datos en formato Access 2003, la carpeta Forms contiene el formulario de la aplicación Implementando una solución con Microsoft Visual Basic 2005A continuación detallo los requerimientos necesarios para crear el proyecto, desarrollado en VB 2005, Edición Profesional:
El códigoA continuación muestro la sección del código, el cual se describe los espacios de nombres , los objetos de ADO.NET para acceder a la base de datos y la técnica que se utiliza en el vio masivo de correos mediante un ciclo iterativo con la base de datos. Imports System.Data Imports System.IO Imports System.Text Imports System.Web.Mail Imports System.Data.OleDb Imports System.Management Imports System.ServiceProcess Public Class frmMain Dim mailMsg As New MailMessage() Private Sub btnCerrar_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnCerrar.Click Me.Close() Application.Exit() End Sub Private Sub btnSendMail_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles btnSendMail.Click Try Windows.Forms.Cursor.Current = Cursors.WaitCursor '--Protocolo de correo saliente. Cambiarlo según la configuración del Proveedor de Internet. SmtpMail.SmtpServer = "nicasoft.com.ni" Dim cntDB As New OleDbConnection(strConAccess) cntDB.Open() Dim SQLMail As String = "SELECT * FROM tblMail" Dim cmdMail As New OleDbCommand(SQLMail, cntDB) Dim rdMail As OleDbDataReader = cmdMail.ExecuteReader While rdMail.Read Dim strMensaje As String = Me.rchtxtMail.Text Dim srtCuenta As String = "Usuario: " & rdMail.Item("username") & vbCrLf & _ "Clave: " & rdMail.Item("password") With mailMsg .From = Me.txtFrom.Text.Trim .To = rdMail.Item("mail") .Subject = Me.txtSubject.Text.Trim .Body = strMensaje.Replace("@CUENTA_APP", srtCuenta) .Priority = MailPriority.Normal End With SmtpMail.Send(mailMsg) End While MsgBox("Los correos fueron enviados a sus respectivos destinatarios." & _ " Haga clic en el boton cerrar.", _ MsgBoxStyle.Information, My.Application.Info.Title) Windows.Forms.Cursor.Current = Cursors.Default rdMail.Close() cntDB.Close() Catch ex As Exception Windows.Forms.Cursor.Current = Cursors.Default MsgBox(ex.Message, MsgBoxStyle.Critical, "Error") End Try End Sub End Class Como trabaja el códigoEl proceso de la aplicación es simple se abre una conexión a la base de datos, se itera una tabla de la misma y luego en cada iteración procesa y lee el correo electrónico y lo que se desea enviar a cada uno de ellos, la propiedad Body contiene el contenido del correo, se utiliza la función Replace para cambiar en tiempo de ejecución una parte del contenido del texto a enviar, que en este caso es que cada usuario se le enviara su correspondiente cuenta de acceso y clave a una aplicación como por ejemplo. En otras palabras esta función busca y reemplaza un fragmento de texto dentro de una cadena en particular. Luego el método Send permite enviar el contenido del correo a la cuenta del destinatario correspondiente.
ConclusionesEste es un excelente método para enviar correo electrónico a múltiples clientes informándoles de los nuevos servicios, productos u otros elementos. Este es un método que se describe como envió de correo electrónico personalizado sin utilizar ningún ambiente de software de correo de terceros, simplemente un pequeño programa en Visual Basic 2005 y una base de datos de Microsoft Access 2003. Como se observa es posible anexar o cambiar cualquier parte del mensaje del correo electrónico en tiempo de ejecución proporcionándole un alto nivel de versatilidad a los mismos. Para contactarnos puedes visitar nuestro sitio oficial : www.nicasoft.com.ni Espacios de nombres usados en el código de este artículo:Imports System.Data
|
Código de ejemplo (comprimido): |
Fichero con el código de ejemplo: gcuadra_winAppSendEmail.zip - 43.0 KB
|