Fecha de publicación del tutorial: 2004-01-08

Tutorial visitado 16.013 veces Descargar en PDF
Tutorial para el desarrollo de un sistema de envíos maxivos de correos

Desarrollo de un sistema de envío de correos utilizado base de datos.

 

1- INTRODUCCIÓN

A continuación pasaré a describir el proceso de realización de un sistema para el envío de correos (mailings) de forma automática utilizando un sistema de base de datos (Microsoft SQL Server).

Los pasos a seguir para este desarrollo son:

  • Diseñar y maquetar el mailing que se desea enviar en formato html.
  • Diseñar y creación de tablas para el sistema de base de datos de usuarios.
  • Desarrollo, configuración y ejecución de la página de envío de mailings.

 

2- IMPLEMENTACIÓN DEL SISTEMA

2.1- Diseñar y maquetar el mailing en html que se desea enviar.

Es necesario diseñar y maquetar una página en html que nos servirá de mailing para enviar a nuestros usuarios, estos mailing pueden contener múltiples elementos gráficos, textos, flash, ... todos ellos deberán tener sus rutas puestas de modo absoluto al dominio, es decir, todas los elementos deben incluir como http://www.dominio/img/1.gif por ejemplo, nunca de forma relativa, por ejemplo: /img/1.gif, para que en los gestores de correo (outlook, pegasus, eudora, ...) se presenten correctamente.

Hay miles de consejos de marketing para la realización de estos mailings (correos llamativos, creativos, originales, directos, de poco tamaño, ...), en fin LA IMAGINACIÓN AL PODER!!!

Para este ejemplo utilizaremos el siguiente modelo.

El código de este ejemplo es el siguiente:

<HTML>
<HEAD>
<TITLE>Correo de prueba - Carixma</TITLE>
</HEAD>
<BODY bgColor=#cccccc background="http://www.carixma.com/img/tutoriales/fondo.gif" NOSEND="1" link="#075878" vlink="#9999FF">
<br>
<TABLE cellSpacing=0 cellPadding=2 width=479 align=center bgColor=#000000 border=0 height="301">
<TR>
<TD Align="Center">
<TABLE cellSpacing=0 cellPadding=10 bgColor=#ffffff border=0>
<TR>
<TD>
<TABLE width="729" height="262" BORDER="1" align="left">
<TR>
<TD valign=top width="729" height="294">
<br>
<B><center><FONT face="Trebuchet MS, Verdana, Arial" color="#075878" size=5>MAILING DE PRUEBA</Font></center></B><br>
<FONT Face="Verdana" size=2>
<p align=center> No cree en el destino? Hoy es su día de suerte, ha encontrado el mejor tutorial del mundo!!!<br><br><br><br><br></p>
<p align="left"> <font size="4" color="#0000ff"><b>CARIXMA.COM</b></font><font size="4" color="#000000"><b>, SERVICIOS PARA LOS PROFESIONALES Y PYMES</b></p>
</font>
<hr>
<FONT Face="Verdana" size=2><p align="left">Pulse <a href="http://www.carixma.com" target="_blank">aquí</a> para disponer de infinidad de recursos y utilidades.</b><br></p></font>
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
</TD>
</TR>
<TR>
<TD height="14">
<table cellspacing=0 cellpadding=3 width="100%" border=0 bordercolor="#0000CC">
<tr><td width="70%" bgcolor=#075878 height="17" align="left"><br><br></td></tr>
</table>
</TD>
</TR>
</TABLE>
</BODY>
<>/HTML>

Para descargártelo pulsa aquí.

 

2.2- Diseñar y creación de tablas para el sistema de base de datos de usuarios.

Se necesita preparar una tabla, la denominaremos (tblMailings) con la información de nuestros usuarios, para este ejemplo sólo necesitaremos tener la dirección de correo (campo EMail) de tipo varchar y un identificador de usuario (campo IdUser) de tipo int (identity), pero se puede hacer tan compleja como se precise añadiendo la dirección, teléfonos, ...). El diseño de la tabla sería el siguiente:

El script correspondiente a esta tabla es:

CREATE TABLE [dbo].[mailings] (
[IdUser] [int] IDENTITY (1, 1) NOT NULL ,
[Email] [varchar] (150) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
) ON [PRIMARY]
GO


ALTER TABLE [dbo].[mailings] WITH NOCHECK ADD
CONSTRAINT [PK_mailings] PRIMARY KEY CLUSTERED
(
[IdUser]
) ON [PRIMARY]
GO

 

2.3- Desarrollo, configuración y ejecución de la página de envío de mailings.

Finalmente, se desarrollan unas páginas asp que se encargan de seleccionar el rango de identificadores a los que enviar los mailings y de enviar los correos.

Para el envío de estos correos podemos utilizar dos componentes: SMTPsvgr o CDonts, dependiendo del sistema que se tenga instalado en el servidor, a continuación presentamos los códigos disponibles con ambos ejemplos, en estos archivos existe una variable "Cuerpo" donde debemos incluir el código del mailing realizado anteriormente, sustituyendo las dobles comillas ("), por una comilla simple (') para evitar problemas en el envío.

El código de estos ejemplos son los siguientes:

Código de la página que utiliza Cdonts, para la gestión de los correos.

Página 1 (send_cdonts.asp):

<HTML>
<HEAD>
<title>Carixma.com: Servicios para profesionales y pymes</title>
<meta http-equiv="TITLE" content="Carixma.com">
<meta name="description" content="Servicios para profesionales y empresas.">
<meta name="robots" content="FOLLOW,INDEX">
<meta name="keywords" content="carisma, carixma, descargas, download, downloads, tutoriales, manuales, antivirus, alcala de henares, la garena, garena, virus, pymes, profesionales, trabajo, trabajar, empleo, empresa, candidatos, currículo, curriculo, currículum, curriculum, CV, laboral, ofertas de empleo, ofertas de trabajo, ofertas empleo, ofertas trabajo, bolsa sectorial, formación, formacion, franquicias, El pais, diario, periodico, newspaper, prensa, press, noticia, news, internacional, international, world, nacional, national, nation, españa, spain, información general;">
</HEAD>
<body bgcolor="#ffffff" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0" scroll="auto">
<form name="frmCarixma" method="post" action="send_bd_cdonts.asp">
<table width="100%" border="0" cellspacing="0" cellpadding="10">
<tr><td colspan="2" align="left" valign="middle"><font class="titularpagina">INTRODUZCA EL RANGO DE LOS IDENTIFICADORES</font>           <img src="/img/carixma.gif" border="0" width="125" height="36" alt="Carixma"></td></tr>
<tr><td width="20%" align="right">IdUser Inicial: </td><td width="80%" align="left"><input type="text" name="IdUserFirst" value="" size="50"></td></tr>
<tr><td width="20%" align="right">IdUser Final: </td><td width="80%" align="left"><input type="text" name="IdUserLast" value="" size="50"></td></tr>
<tr><td align="left" colspan="2"><input type="submit" name="Enviar" value="Enviar" style="cursor:hand"></td></tr>
</table>
</form>
</body>
</html>


Página 2 (send_bd_cdonts.asp):

<HTML>
<HEAD>
<title>Carixma.com: Servicios para profesionales y pymes</title>
<meta http-equiv="TITLE" content="Carixma.com">
<meta name="description" content="Servicios para profesionales y empresas.">
<meta name="robots" content="FOLLOW,INDEX">
<meta name="keywords" content="carisma, antivirus, alcala de henares, la garena, garena, virus, pymes, profesionales, trabajo, trabajar, empleo, empresa, candidatos, currículo, curriculo, currículum, curriculum, CV, laboral, ofertas de empleo, ofertas de trabajo, ofertas empleo, ofertas trabajo, bolsa sectorial, formación, formacion, franquicias, El pais, diario, periodico, newspaper, prensa, press, noticia, news, internacional, international, world, nacional, national, nation, españa, spain, información general;">
</HEAD>
<body bgcolor="#FFFFFF" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0" scroll="auto">
<%
dim Cnn
dim sSQL
dim rstSQL
dim Contador
Contador = 0

Set Cnn = Server.CreateObject("ADODB.Connection")
'Se precisa incluir la cadena correcta
Conexion = "Provider=SQLOLEDB;Data Source=SERVIDOR-SQL;Initial Catalog=www;User ID=login;Password=pwd;"
Cnn.Open Conexion

if err.number <> 0 then
response.write (err.description)
response.end
end if

sSQL = "select * from tblMailings where Iduser between " & request("IdUserFirst") & " and " & request("IdUserLast") & " Order by IdUser"

Set rstSQL = Server.CreateObject("ADODB.Recordset")
rstSQL.Open sSQL, Cnn, 1, 2
%>
<table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr>
<td>
<p><b>Información sobre mailings enviados.</b></p>
<%
Do while not (rstSQL.EOF)
'Envio de correo
Set Mailer = server.CreateObject("CDonts.NewMail")
Mailer.From = "info@dominio.es"
Mailer.To = Email
Mailer.Subject = "Publicidad: Envío de correo de prueba."
Mailer.MailFormat = 0 ' Html
Mailer.BodyFormat = 0 ' Html

Cuerpo = "<HTML><HEAD><TITLE>Correo de prueba - Carixma</TITLE></HEAD><BODY bgColor=#cccccc background='http://www.carixma.com/img/tutoriales/fondo.gif' NOSEND='1' link='#075878' vlink='#9999FF'><br><TABLE cellSpacing=0 cellPadding=2 width=479 align=center bgColor=#000000 border=0 height='301'><TR><TD Align='Center'><TABLE cellSpacing=0 cellPadding=10 bgColor=#ffffff border=0><TR><TD><TABLE width='729' height='262' BORDER='1' align='center'><TR>"

Cuerpo = Cuerpo & "<TD valign=top width='729' height='294'><br><B><center><FONT face='Trebuchet MS, Verdana, Arial' color='#075878' size=5>MAILING DE PRUEBA</Font></center></B><br><FONT Face='Verdana' size=2><p align=center> No cree en el destino? Hoy es su día de suerte, ha encontrado el mejor tutorial del mundo!!!<br><br><br><br><br></p><p align='center'> <font size='4' color='#0000ff'><b>CARIXMA.COM</b></font><font size='4' color='#000000'><b>, SERVICIOS PARA LOS PROFESIONALES Y PYMES</b></p></font><hr><FONT Face='Verdana' size=2><p align='center'>Pulse <a href='http://www.carixma.com' target='_blank'>aquí</a> para disponer de infinidad de recursos y utilidades.</b><br></p></font></TD></TR></TABLE></TD></TR></TABLE></TD></TR><TR><TD height='14'>"

Cuerpo = Cuerpo & "<table cellspacing=0 cellpadding=3 width='100%' border=0 bordercolor='#0000CC'><tr><td width='70%' bgcolor=#075878 height='17' align='center'><br><br></td></tr></table></TD></TR></TABLE></BODY></HTML>"


Mailer.Body = Cuerpo

Mailer.Send
Set Mailer = Nothing

Contador = Contador + 1

rstSQL.MoveNext
Loop

response.write "Enviados: " & Contador & " correos."

'Cerramos los objetos
rstSQL.Close
Cnn.Close
Set rstSQL = Nothing
Set Cnn = Nothing
%>
</td>
</tr>
</table>
</body>
</html>
 
Código de la página que utiliza SMTPsvg, para la gestión de los correos.

Página 1 (send_smtpsvg.asp):

<HTML>
<HEAD>
<title>Carixma.com: Servicios para profesionales y pymes</title>
<meta http-equiv="TITLE" content="Carixma.com">
<meta name="description" content="Servicios para profesionales y empresas.">
<meta name="robots" content="FOLLOW,INDEX">
<meta name="keywords" content="carisma, carixma, descargas, download, downloads, tutoriales, manuales, antivirus, alcala de henares, la garena, garena, virus, pymes, profesionales, trabajo, trabajar, empleo, empresa, candidatos, currículo, curriculo, currículum, curriculum, CV, laboral, ofertas de empleo, ofertas de trabajo, ofertas empleo, ofertas trabajo, bolsa sectorial, formación, formacion, franquicias, El pais, diario, periodico, newspaper, prensa, press, noticia, news, internacional, international, world, nacional, national, nation, españa, spain, información general;">
</HEAD>
<body bgcolor="#ffffff" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0" scroll="auto">
<form name="frmCarixma" method="post" action="send_bd_smtpsvg.asp">
<table width="100%" border="0" cellspacing="0" cellpadding="10">
<tr><td colspan="2" align="left" valign="middle"><font class="titularpagina">INTRODUZCA EL RANGO DE LOS IDENTIFICADORES</font>           <img src="/img/carixma.gif" border="0" width="125" height="36" alt="Carixma"></td></tr>
<tr><td width="20%" align="right">IdUser Inicial: </td><td width="80%" align="left"><input type="text" name="IdUserFirst" value="" size="50"></td></tr>
<tr><td width="20%" align="right">IdUser Final: </td><td width="80%" align="left"><input type="text" name="IdUserLast" value="" size="50"></td></tr>
<tr><td align="left" colspan="2"><input type="submit" name="Enviar" value="Enviar" style="cursor:hand"></td></tr>
</table>
</form>
</body>
</html>


Página 2 (send_bd_smtpsvg.asp):

<HTML>
<HEAD>
<title>Carixma.com: Servicios para profesionales y pymes</title>
<meta http-equiv="TITLE" content="Carixma.com">
<meta name="description" content="Servicios para profesionales y empresas.">
<meta name="robots" content="FOLLOW,INDEX">
<meta name="keywords" content="carisma, antivirus, alcala de henares, la garena, garena, virus, pymes, profesionales, trabajo, trabajar, empleo, empresa, candidatos, currículo, curriculo, currículum, curriculum, CV, laboral, ofertas de empleo, ofertas de trabajo, ofertas empleo, ofertas trabajo, bolsa sectorial, formación, formacion, franquicias, El pais, diario, periodico, newspaper, prensa, press, noticia, news, internacional, international, world, nacional, national, nation, españa, spain, información general;">
</HEAD>
<body bgcolor="#FFFFFF" topmargin="0" leftmargin="0" marginwidth="0" marginheight="0" scroll="auto">
<%
dim Cnn
dim sSQL
dim rstSQL
dim Contador
Contador = 0

Set Cnn = Server.CreateObject("ADODB.Connection")
'Se precisa incluir la cadena correcta
Conexion = "Provider=SQLOLEDB;Data Source=SERVIDOR-SQL;Initial Catalog=www;User ID=login;Password=pwd;"
Cnn.Open Conexion

if err.number <> 0 then
response.write (err.description)
response.end
end if

sSQL = "select * from tblMailings where Iduser between " & request("IdUserFirst") & " and " & request("IdUserLast") & " Order by IdUser"

Set rstSQL = Server.CreateObject("ADODB.Recordset")
rstSQL.Open sSQL, Cnn, 1, 2
%>
<table width="100%" border="0" cellspacing="0" cellpadding="2">
<tr>
<td>
<p><b>Información sobre mailings enviados.</b></p>
<%
Do while not (rstSQL.EOF)
'Envio de correo
Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
Mailer.RemoteHost = "smtp.dominio.com"
Mailer.Charset = 2 'Utilizamos UNICODE
Mailer.ContentType = "text/html"
Mailer.FromName = "Publi"
Mailer.FromAddress = "info@Dominio.com"
Mailer.Subject = "Publicidad: Correo de Pruebas."
Mailer.AddRecipient "Usuario", rstSQL("Email")

Cuerpo = "<HTML><HEAD><TITLE>Correo de prueba - Carixma</TITLE></HEAD><BODY bgColor=#cccccc background='http://www.carixma.com/img/tutoriales/fondo.gif' NOSEND='1' link='#075878' vlink='#9999FF'><br><TABLE cellSpacing=0 cellPadding=2 width=479 align=center bgColor=#000000 border=0 height='301'><TR><TD Align='Center'><TABLE cellSpacing=0 cellPadding=10 bgColor=#ffffff border=0><TR><TD><TABLE width='729' height='262' BORDER='1' align='center'><TR>"

Cuerpo = Cuerpo & "<TD valign=top width='729' height='294'><br><B><center><FONT face='Trebuchet MS, Verdana, Arial' color='#075878' size=5>MAILING DE PRUEBA</Font></center></B><br><FONT Face='Verdana' size=2><p align=center> No cree en el destino? Hoy es su día de suerte, ha encontrado el mejor tutorial del mundo!!!<br><br><br><br><br></p><p align='center'> <font size='4' color='#0000ff'><b>CARIXMA.COM</b></font><font size='4' color='#000000'><b>, SERVICIOS PARA LOS PROFESIONALES Y PYMES</b></p></font><hr><FONT Face='Verdana' size=2><p align='center'>Pulse <a href='http://www.carixma.com' target='_blank'>aquí</a> para disponer de infinidad de recursos y utilidades.</b><br></p></font></TD></TR></TABLE></TD></TR></TABLE></TD></TR><TR><TD height='14'>"

Cuerpo = Cuerpo & "<table cellspacing=0 cellpadding=3 width='100%' border=0 bordercolor='#0000CC'><tr><td width='70%' bgcolor=#075878 height='17' align='center'><br><br></td></tr></table></TD></TR></TABLE></BODY></HTML>"


Mailer.BodyText = Cuerpo
Mailer.SendMail

Set Mailer = Nothing

Contador = Contador + 1

rstSQL.MoveNext
Loop

response.write "Enviados: " & Contador & " correos."

'Cerramos los objetos
rstSQL.Close
Cnn.Close
Set rstSQL = Nothing
Set Cnn = Nothing
%>
</td>
</tr>
</table>
</body>
</html>

Descripción del proceso: Inicialmente se presenta una página donde se solicita el rando de identificadores de usuarios a los que se desea enviar el mailing, una vez aceptados estos datos, en la siguiente página se comienza la gestión y envío, conectándose a la base de datos, y cargando una select que apunta a la tabla mailings para cargar aquellos registros que se desean recuperar y finalmente mediante el objeto CDonts o SMTPsvg se configuran los correos a enviar.

Descargar Fichero SMTPsvgr    --    Descargar Fichero CDonts

Los archivos .asp de estos ficheros, se deben colocar en el servidor y ejecutarlos, por ejemplos en: (http://www.dominio.com/mailings/send_smtpsvg.asp ó http://www.dominio.com/mailings/send_cdonts.asp), si todo va bien se presentará el número de mailings enviado.

Es aconsejable hacer grupos de envíos de unos 100 correos aproximadamente, cada vez que se ejecute la página, dependiendo de la velocidad de ejecución de nuestro sistema.

 

Espero que os haya servido de ayuda.

 

A continuación puedes evaluarlo:

Regístrate para evaluarlo

Por favor, vota +1 o compártelo si te pareció interesante

Share |
Anímate y coméntanos lo que pienses sobre este TUTORIAL: