2010-07-27 5 views
-1

J'utilise le code ASP et composants ASPEmail pour envoyer des courriels à nos clinets, mais j'ai quelques problmes ...Vous recherchez une solution de diffusion

J'ai plus de 1000 adresse e-mail que je dois leur envoyer un e-mail , en raison de ma limitation de fournisseur SMTP, je ne peux pas les ajouter tous comme BCC dans un email mais j'ai besoin d'envoyer chaque email séparément, donc de boucler sur +1000 fois ce qui prend une éternité et déclenche l'erreur de timeout du serveur.

Je dois envoyer ces courriels environ 20 fois par jour.

Ceci est mon script:

on error resume next 

msg = "SOME TEXT HERE" 


Set Mail = Server.CreateObject("Persits.MailSender") 

Mail.Host = "SMPT.HOST.ADDRESS" 
Mail.Port = 25  

Mail.CharSet = "UTF-8" 
Mail.ContentTransferEncoding = "Quoted-Printable" 

Mail.From = "[email protected]" 

MailSubject = "email subject" 

Mail.Subject = Mail.EncodeHeader(MailSubject, "utf-8") 

Mail.Body = msg 

Mail.IsHTML = True 


zBcc = split(zBcc, ";") '1000 emails here 

for i=0 to Ubound(zBcc) 
    zBcc(i) = trim(zBcc(i)) 
    if len(zBcc(i))>0 then 
    if inStr(zBcc(i), " ")>0 then 

    else 
    if (Mail.ValidateAddress(zBcc(i)) = 0) then 

    Mail.Reset() 
    Mail.AddAddress zBcc(i) 
    Mail.Send 

    end if 

    end if 
    end if 
next 

set Mail=nothing 

Répondre

0

pourquoi ne pas vous le faire en utilisant une logique de type pagination-à-dire limite de 100, boucle à travers ce lot, une fois que terminée, recharger la page avec la le décalage suivant à l'esprit, comme send-email.asp? offset = 100, send-email.asp? offset = 200, etc. utilisez cette valeur de décalage pour obtenir le lot suivant répétez le processus jusqu'à la fin du jeu d'enregistrements.

vous avez au moins moins de chance de ce timing sur altho vous pouvez l'augmenter: server.ScriptTimeout = 180

0

Tout d'abord je maximiser le nombre de BCC par cycle de. Disons que vous pouvez envoyer 50 BCC en une seule fois; vous devriez: en particulier lorsque vous avez besoin de cette page environ 20 fois par jour.

Quoi qu'il en soit. Avant de commencer; maximiser le scripttimeout

Server.ScriptTimeout = 2147483647 
Questions connexes