Avatar billede -thomas- Nybegynder
24. september 2003 - 15:35 Der er 13 kommentarer og
1 løsning

Jmail og Server.ScriptTimeout

Jeg prøver at sende en masse mails ud (til et nyhedsbrev) med nedenstående kode:

Do While Not rs.Eof
jmail.AddRecipient rs("email"), rs("name")
jmail.Send("mail.tele.dk")
jmail.ClearRecipients()
rs.Movenext
Loop

Men hvis jeg sender 150+ mails ud får jeg Server.ScriptTimeout. Jeg kan selvfølgelig sætte denne til en høj værdi, men er det måden at gøre det på?

På forhånd tak for hjælpen.
Avatar billede bernhof Nybegynder
24. september 2003 - 15:44 #1
Måske ville det være nemmere at gøre således:

jmail.AddRecipient "mailinglist@domain.dk", "Mailinglist"

Do While Not rs.Eof
    jmail.AddRecipientBCC rs("email")
    rs.Movenext
Loop

jmail.Send("mail.tele.dk")

.. Så bliver alle mails sendt på én gang.
Avatar billede dawin_dk Nybegynder
24. september 2003 - 15:53 #2
nej .. udsend til 1 person ad gangen .. det vil så være muligt senere at personificere mails (som f.eks. skrive "hej navn") ... og ja .. du sætter bare timeout op .. men sikre dig at dit script er testet og ikke fucker up inden ...

et andet problem med at sende til alle på en gang er også:
BCC modtagere bliver ofte betragtet som junk og smidt i spam-folders ... og der er også nogen smtp servers der kun godtager 25 modtagere pr. mail ...

jeg bruger selv scripttimeut og sender til flere tusinde brugere på en gang .. uden problemer .... en god ide er at lade den udskrive en status til dig engang imellem så du kan se den stadig kører og er nået videre....  (udskriv noget og brug response.flush)
Avatar billede -thomas- Nybegynder
24. september 2003 - 19:01 #3
mikbj> Det duer jo ikke at alle kan se hvem der ellers får nyhedsbrevet.

dawin_dk> Tak for hjælpen - jeg sætter min scripttimeout op. Ville bare høre om der var andre måder at gøre det på.
Avatar billede dawin_dk Nybegynder
24. september 2003 - 19:03 #4
-thomas-: man kan godt bruge den metode mikbj skrev... og nej de andre kan ikke se hvem der modtager det.... da de står som BCC ... men det er en metode jeg ik vil anbefale af de grunde jeg har nævnt ... er ik fedt en mail bliver markeret som spam ... f.eks. :)
Avatar billede -thomas- Nybegynder
24. september 2003 - 19:08 #5
Nå ja, det er selfølgelig rigtigt. Jeg prøver lige med at sætte scripttimeout op, men synes ikke den sender mere end 2-4 mails i sekundet, så den skal vel sættes ret højt, hvis den skal sende over tusinde?
Avatar billede dawin_dk Nybegynder
24. september 2003 - 19:25 #6
ja.. jeg har før haft udsendelse der tog en ca 25 minutter ... og det er jo så en timeout på 25*60 ... sæt den evt til 1 time.. så burde du være nogenlunde sikret .. :)
Avatar billede krogstrup Nybegynder
24. september 2003 - 19:26 #7
thomas >>> Har du selv adgang til serveren ?
Avatar billede krogstrup Nybegynder
24. september 2003 - 19:28 #8
Hvis der er installeret MS SMTP service (via IIS) på serveren, kan du benytte den indbyggede QUE funktion i JMail, som placerer alle dine mails i en "kø-mappe" under IIS. Herved bliver din ASP side eksekveret øjeblikkeligt - herefter sørger IIS for stille og roligt at sende dine mails....

Jeg har ikke selv prøvet det, men det skulle efter sigende fungere utrolig godt !
Avatar billede -thomas- Nybegynder
24. september 2003 - 19:53 #9
krogstrup> Ja, det så jeg i dokumentationen til jmail at man kunne. Men regner ikke med jeg har adgang til det på serveren, men det er da værd at undersøge.
Avatar billede -thomas- Nybegynder
10. december 2003 - 15:01 #10
Hej,
Nu har jeg lige sendt 2600 mails ud, 1. person af gangen med et server.scripttimeout på 3600 - det virkede fint og tog ca. tre minutter. Men Internet Explorer blev utålmodig og viste en fejlside istedet for at vise siden, hvor der står at alle mails blev sendt. Hvad kan jeg gøre for at undgå dette? Ville det hjælpe, at skrive:

Response.Write "x mails sendt"
Response.Flush

for hver 100 mails der bliver sendt?

Nogen forslag?
Avatar billede moejensen Nybegynder
01. november 2004 - 10:31 #11
-thomas- Fandt du et svar, for jeg sidder med samme problem?
Avatar billede -thomas- Nybegynder
01. november 2004 - 10:45 #12
Ja, jeg har i hvert fald kørt med det lige siden uden problemer.

Sæt Server.ScriptTimeout = 3600 for en sikkerheds skyld.

Opret kun objektet én gang, sæt alle egenskaberne på mailen og kør en løkke gennem alle modtagerene (du kan udskifte .nq med execute, hvis du ikke har adgang til denne funktion):

Do While Not rs.Eof
jmail.AddRecipient rs("email"), rs("name")
jmail.nq
jmail.ClearRecipients
rs.Movenext
Loop

Du kan evt. køre en Response.Flush i løkken, så der bliver sendt noget til browseren hele tiden.

Det skulle virke perfekt.
Avatar billede moejensen Nybegynder
01. november 2004 - 10:58 #13
Det lyder jo ganske godt, jeg oplever nelig i øjeblikket det med at den får sendt mailsne ud, men den hænger bare efterfølgende så den aldrig kommer hen til godkendelsessiden.
Avatar billede -thomas- Nybegynder
01. november 2004 - 12:04 #14
Ja, det er vidst browseren der timer ud mens den venter på svar fra serveren. Og medmindre du bruger Response.Flush får den først et svar, når alle mails er sendt. Det har i hvert fald løst problemet for mig.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Netcompany A/S

Network Engineer

Rambøll Management Consulting

Senior Software Engineer

Politiets Efterretningstjeneste

Configuration Manager til PET's IT-afdeling

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Kryptokustode til opbygning af Forsvarets nye IT-platform