Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/12/2008, 14:41
Avatar de tatoman
tatoman
 
Fecha de Ingreso: abril-2002
Ubicación: Madrid
Mensajes: 215
Antigüedad: 23 años, 1 mes
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