Foros del Web » Programando para Internet » ASP Clásico »

Colaboracion - Envio de Boletines con ASPEmail Escalonados desde BBDD

Estas en el tema de Colaboracion - Envio de Boletines con ASPEmail Escalonados desde BBDD en el foro de ASP Clásico en Foros del Web. Muy buenas, quisiera aportar un codigo que he desarrollado (seguro que ya hay muchos) en base a la limitacion de muchos hosting de limitar el ...
  #1 (permalink)  
Antiguo 18/12/2008, 14:41
Avatar de tatoman  
Fecha de Ingreso: abril-2002
Ubicación: Madrid
Mensajes: 215
Antigüedad: 22 años, 2 meses
Puntos: 1
Colaboracion - Envio de Boletines con ASPEmail Escalonados desde BBDD

Muy buenas, quisiera aportar un codigo que he desarrollado (seguro que ya hay muchos) en base a la limitacion de muchos hosting de limitar el numero de destinatarios de envio a traves del ASPEmail.

He enviado sin problemas empaquetando de 50 en 50 (o los que querais montar) los destinatarios y creando una cola de envio que me ha permitido enviar hasta 25.000 destinatarios (seguro que acepta mas) sin ningun problema.

En fin, aqui os lo dejo, yo utulizo una conexion con DSN a traves de un include que podeis ver en el codigo, pero cualquier conexion a BBDD es valida.

La BBDD contiene en uno de sus campos (email) el email del destinatario:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="../Connections/boletines.asp" -->
<%
Dim Recordset1
Dim Recordset1_numRows
Dim paquetes
'Creo la variable para empaquetar los destinatarios

Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_boletines_STRING
Recordset1.Source = "SELECT * FROM [Tabla de la BBDD] ORDER BY Email ASC"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()

Recordset1_numRows = 0
%>

<%
Application("contador") = 0

'Hacemos el primer bucle, creamos objeto y ponemos contadores a cero
DO while NOT Recordset1.eof
paquetes = 0
Set Mail= Server.CreateObject("Persits.MailSender")
mail.Host ="smtp.tuweb.com"
Mail.Username = "usuario_correo"
Mail.Password = "password_correo"
mail.From ="[email protected]"
mail.FromName="Informacion tuweb.com"
mail.Subject = "Asunto del mensaje"
mail.AppendBodyFromFile "D:\xvrt\tuweb.com\Html\boletines\presentacion.html"
'Esta es la localizacion en tu server de la pagina html que sera el boletin
mail.IsHTML =true

'preparo el segundo bucle, empaqueto todo en paquetes de 50 destinatarios y envio
DO while NOT Recordset1.eof AND paquetes < 50
mail.AddBcc (Recordset1.Fields.Item("Email").Value),"Anunciant es"
Recordset1.movenext
Application("contador") = Application("contador") + 1
paquetes = paquetes + 1
LOOP

On Error Resume Next
mail.SendToQueue
if err <> 0 then
response.write "HA OCURRIDO EL SIGUIENTE ERROR." & err.description
else
response.write "MENSAJE ENVIADO CORRECTAMENTE A." & Application("contador") & "<br>"
end if
Set Mail = Nothing
LOOP
response.write "<BR>" & "TOTAL ENVIADOS" & Application("contador")
%>

<%
Recordset1.Close()
Set Recordset1 = Nothing
%>


Espero que os sea de ayuda!!!!
__________________
Elias Frances
Webmaster (ultimos proyectos) de:
www.internet20.es
  #2 (permalink)  
Antiguo 18/12/2008, 18:28
Avatar de Valery-Net  
Fecha de Ingreso: agosto-2008
Mensajes: 694
Antigüedad: 15 años, 9 meses
Puntos: 12
Respuesta: Colaboracion - Envio de Boletines con ASPEmail Escalonados desde BBDD

Hola tatoman, bueno tu código, yo haría algunos cambios, no crearía el objeto del Mail (Set Mail= Server.CreateObject("Persits.MailSender")) dentro del ciclo sino fuera, con un simple objeto Mail podrías enviar los emails, no es necesario crearlos y eliminarlos cada envío de 50 emails.
  #3 (permalink)  
Antiguo 19/12/2008, 07:18
Avatar de tatoman  
Fecha de Ingreso: abril-2002
Ubicación: Madrid
Mensajes: 215
Antigüedad: 22 años, 2 meses
Puntos: 1
Respuesta: Colaboracion - Envio de Boletines con ASPEmail Escalonados desde BBDD

Muchas gracias, cualquier colaboracion adicional es buena y podemos confeccionar un sistema de envio mejor.
__________________
Elias Frances
Webmaster (ultimos proyectos) de:
www.internet20.es
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:18.