Hola,
Tengo un boletín que necesito enviar a unos 4000 usuarios.
Para ello, he optado por usar el componente ASPMailer de Scibit, ya que CDO lo tuve que descartar hace tiempo porque de la noche a la mañana me dejó de funcionar y no hubo manera de arreglarlo.
Con ASPMailer no tengo problema para enviar emails normales(confirmaciones de registro, formularios a mi email, etc...) pero ahora cuando he tenido que enviar 4000 me da un problema.
Hago un select de la tabla usuarios, y la recorro, de tal forma que para cada uno creo un objeto Scibit.Aspmailer, le pongo los parámetros, el texto, lo envío y lo seteo a nothing.
Envía los 30 primeros, y a partir de ahí me da Error 6. Protocol Error.
Acto seguido, lo vuelvo a ejecutar (cogiendo en el select todos menos los 30 ya enviados) y me vuelve a hacer lo mismo. Envía 30 y el resto fallan. Por supuesto no puedo hacer esto cada mes hasta completar los 4000.
ASPMailer utiliza SMTP para envio de emails.
Me temo que es un problema con SMTP. De alguna manera, hasta que no hayan salido los 30, no deja crear nuevos.
No puedo usar ningún mail bomber porque los mensajes están personalizados, es decir, son 4000 emails diferentes, no un email a 4000 direcciones.
Aquí os pongo el código que utilizo.
Código:
<%
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open ("Provider=SQLOLEDB.1;Password=xx;Persist Security Info=True;User ID=xx;Initial Catalog=xx;Data Source=XX3")
sSQL= "select u.nick, u.email, u.pw from usuarios u where u.boletin = 1 order by u.nick"
Set oRS = oConn.Execute(sSQL)
contOk=0
contFailed = 0
do while not oRS.EOF
Set Mailer = Server.CreateObject("SciBit.ASPMailer")
Mailer.From = """miweb.com""" & " <[email protected]>"
Mailer.SMTPHost = "x.x.x.x" 'Aquí realmente hay una dirección ip válida
Mailer.PortNumber=25
Mailer.Subject = "Boletín Agosto MiWeb.com"
Mailer.SubType = 2
Mailer.Recipients = oRS("email")
Text = TextodelMensajePersonalizado 'El usuario y su email van dentro del texto.
Mailer.bodytextadd Text
Mailer.Send
Set MailErr = Mailer.Errors
if MailErr.Count = 0 then
contOk=contOk + 1
response.write ("Enviado email a " & oRS("nick") & " <" & oRS("email") & "><br>" & vbcrlf)
else
contFailed = contFailed + 1
for counter = 0 to MailErr.Count - 1
Response.Write "----------Error Text: " & MailErr.Text(counter) & " - "
Response.Write "Error Number: " & MailErr.Number(counter) & " <BR>"
next
end if
oRS.MoveNext
Set MailErr = Nothing
Set Mailer = Nothing
loop
response.write "<br><Br>Enviados " & contOk & " emails<br>"
response.write "<br><Br>Fallidos " & contFailed & " emails<br>"
oRS.Close
oConn.Close
set oconn=nothing
set ors=nothing
%>
Agradecería una ayuda, puesto que necesito enviar este boletín cuanto antes (debería haberlo enviado el día 1).
Muchas gracias.