02. oktober 2001 - 11:12Der er
38 kommentarer og 1 løsning
800 Point ? Mail hjælp....
Hejsa....
Så er der 800 point til den ekspert der kan hjælpe mig.
Jeg er nemlig begyndt af få problemer med mit mailingliste script... Der er snart over 3000 tilmeldte mail adresser og så mange kan scriptet ikke klare på en gang.
Derfor vil jeg godt have det lavet sådan at den kun udsender 40 mails af gangen og når de først er sendt så tager den de næste 40 mails i databasen osv... Er der en ekspert der kan klare det ? Eller har i en anden løsning der kan klare mit prøblem ?
Her er mit mailingliste script:
------KODE START-------
<HTML> <HEAD> <TITLE>Mailingliste</TITLE> </HEAD> <BODY BGCOLOR=\"#FFFFFF\" TEXT=\"#000000\"> <% if request(\"mode\") = \"send\" then
mailertype = 1
Set Conn = Server.CreateObject(\"ADODB.Connection\") conn.Open \"DBQ=\"&(Server.MapPath(\".\")) &\"\\mailing.mdb; DefaultDir=DBQ=\"&(Server.MapPath(\".\")) &\"\\;Driver={Microsoft Access Driver (*.mdb)};\" SQL = \"SELECT * from mailingliste\" set send = conn.execute( SQL ) do while not send.eof on error resume next if mailertype = 1 then Set JMail = Server.CreateObject(\"JMail.SMTPMail\") JMail.ServerAddress = \"din.mail.server\" JMail.Charset = \"iso-8859-1\" JMail.ContentTransferEncoding = \"8bit\" JMail.Sender = \"afsenders emailadresse\" JMail.Subject = request(\"header\") JMail.AddRecipient send(\"email\") JMail.Body = request(\"tekst\") JMail.Priority = 3 JMail.Execute set JMail = nothing
Servertimeout gør at scripetet ikke går kold så hurtigt... Der er dog mange servere der har sat en begrænsning på, da man nemt kan belaste serveren unødvendigt på den måde.....
på serveren er der en timeout - er en side (fx din mailfunktion) ikke udført inden serverens forudindstillede timeout - ja så stopper den med at udføre scriptet...
med Set servertimeout = 100000000 ændre man på den ene specifikke side timeout\'en og dermed gives der mere tid til scriptet for at blive udført og dermed er der en større chance for at alle mails bliver sendt
bmj, Server.ScriptTimeOut sætter hvor lang tid et script max. må være om at blive kørt. I sekunder.
Hvis du vil lave noget delay kan du bruge en løkke og DateDiff.
mailnumber = 1 do while not send.eof on error resume next if mailertype = 1 then Set JMail = Server.CreateObject(\"JMail.SMTPMail\") JMail.ServerAddress = \"din.mail.server\" JMail.Charset = \"iso-8859-1\" JMail.ContentTransferEncoding = \"8bit\" JMail.Sender = \"afsenders emailadresse\" JMail.Subject = request(\"header\") JMail.AddRecipient send(\"email\") JMail.Body = request(\"tekst\") JMail.Priority = 3 JMail.Execute set JMail = nothing end if
response.write \"<FONT FACE=\'Arial\' SIZE=\'2\' COLOR=\'#000000\'><STRONG>E-mail er sendt til : \"& send(\"email\") &\"</STRONG></FONT><BR>\" send.movenext mailnumber = mailnumber + 1 if (mailnumber mod 40) = 0 then timeout = dateadd(\"s\", 10, now) do: loop until now > timeout end if loop
det vil lave et 10 sekunders delay for hver 40 mails. Men så skal du huske at sætte Server.ScriptTimeOut = 100000000 eller deromkring.
bmj, Server.ScriptTimeOut sætter hvor lang tid et script max. må være om at blive kørt. I sekunder.
Hvis du vil lave noget delay kan du bruge en løkke og DateDiff.
mailnumber = 1 do while not send.eof on error resume next if mailertype = 1 then Set JMail = Server.CreateObject(\"JMail.SMTPMail\") JMail.ServerAddress = \"din.mail.server\" JMail.Charset = \"iso-8859-1\" JMail.ContentTransferEncoding = \"8bit\" JMail.Sender = \"afsenders emailadresse\" JMail.Subject = request(\"header\") JMail.AddRecipient send(\"email\") JMail.Body = request(\"tekst\") JMail.Priority = 3 JMail.Execute set JMail = nothing end if
response.write \"<FONT FACE=\'Arial\' SIZE=\'2\' COLOR=\'#000000\'><STRONG>E-mail er sendt til : \"& send(\"email\") &\"</STRONG></FONT><BR>\" send.movenext mailnumber = mailnumber + 1 if (mailnumber mod 40) = 0 then timeout = dateadd(\"s\", 10, now) do: loop until now > timeout end if loop
Jeg ville også have givet dig lidt point men du har ikke givet mig noget \"svar\" kun \"kommentar\" men jeg har bruget noget af det du skrev og noget af det a-torsten og nu virker mit script igen.... Jeg har lige prøvet at sende ud til 3000 bruger uden problemmer så der er da noget der har løst mit problem...
bmj:> Jeg skrev kun en kommentar, ja .. jeg synes 800 point er for meget så derfor ville jeg ikke svare. Anyway, det kan kun væer mit der har hjulpet da a-torstens ikke funkede en disse (no offense, a-torsten)... men det er lige meget ...
nanoq:> Vi har lige købt et firma og skulle for første gang i dag sende et nyhedsbrev ud til vores 3000 brugere... Men vores script virkede ikke... Derfor ville JEG gerne give 1000 point for at få en løsning... Nu virker det. Så det kan jeg da kun være glad for...
bmj, Nu er jeg én af de personer der mener, at man så vidt muligt bør holde sig til de små retningslinier der er udstukket af Eksperten. F.eks. er der sat en default på 60 point for et svært spørgsmål. Et spørgsmål på bare 100 point, burde således kun gives til næsten UMULIGE opgaver. Skal vi meget højere op, mener jeg opgaven egentlig burde ligge under \"freelance\" og der skulle penge på bordet.
bmj:> Du behøver ikke undskylde :-) Hvis jeg havde ment jeg burde have haft point havde jeg svaret istedet for at kommentere :-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.