Avatar billede bruhnsweb Nybegynder
15. februar 2004 - 18:53 Der er 17 kommentarer og
1 løsning

mailsystem: script timed out

Hej Eksperter

Jeg har ca 250 email adresser i min database, de skal have en nyhedsmail, men de får den ikke alle sammen, da siden skriver:
Script timed Out eller noget i den stil.

Kan dette gøres anderledes?

Jeg har prøvet at loope email adresserne inde i mailen, men jeg vil ikke have at brugerne kan se hvem der ellers har modtaget mailen. Så der skal altså kun stå en mail adresse i til linien.

----------------------------------------------------------------
<%
'Henter email adresser og looper dem!
Set RS = Server.CreateObject("ADODB.RecordSet")
RS.open "Select * From [tblAuthor] where no_email = false" , Conn_crew
Do while not RS.eof
If Trim(RS("Author_email")) <> "" then

set msg = Server.CreateOBject( "JMail.Message" )
msg.ContentType = "text/html"
msg.Logging = true
msg.silent = true
msg.From = "nyhedsmail@zantiago.com"
msg.FromName = "Zantiago Nyhedsmail"
msg.AddRecipient  rs("Author_email")
msg.Subject = request("titel")
msg.Body = "<html><body bgcolor='#000000' text='#333333' link='#999999'><table width='800' border='0' cellspacing='0' cellpadding='6' align='center'><tr><td bgcolor='#FFFFFF'><table width='775' border='0' cellspacing='6' cellpadding='6' align='center'><tr><td><p align='center'><img border='0' src='http://zantiago.com/img/zantiagofrontlogo.gif' width='533' height='82'></p><p align='left'>" & request("besked") & "</p><p><center><b>Du kan afmelde denne mail under din profil på Zantiago.com</b></center></p></td></tr></table></td></tr></table></body></html>"

if not msg.Send("pasmtp.tele.dk") then
Response.Write "Mailen kunne ikke afsendes grundet:<br>"
Response.Write msg.log
else
Response.Write "Mailen er afsendt korrekt<br>"
end if
End IF
rs.movenext
loop
%>
----------------------------------------------------------------
Avatar billede thesurfer Nybegynder
15. februar 2004 - 19:29 #1
En anden måde at gøre det på, er at hente alle email adresserne og putte dem i en strenge, separaret af komma..
f.eks.:
strEmails = "navn@mail.dk, andet@navn.dk, noget_helt@tredje.dk"

så kan du så bruge:
msg.From = "nyhedsmail@zantiago.com"
msg.AddRecipient "nyhedsmail@zantiago.com" (ja, det er din egen email adr)
JMail.AddRecipientBCC strEmails
Avatar billede thesurfer Nybegynder
15. februar 2004 - 19:31 #2
det med strEmail:

Do while not RS.eof
  strEmail = strEmail & rs("Author_email") & ", "
loop

strEmail = left(strEmail, len(strEmail) - 2) ' fjern det sidste ", ", som er 2 tegn..

msg......

Forstår du?
Avatar billede keysersoze Ekspert
15. februar 2004 - 19:53 #3
en side timer ud på 3 minutter - og det _burde_ ikke tage så lang tid at sende så få mails. Men sætter du

Server.ScriptTimeout = NumSeconds

ind i toppen af dit script (bare byt NumSeconds ud med antal sekunder - fx 1000) så giver du scriptet lov til at køre længere.
Avatar billede bruhnsweb Nybegynder
16. februar 2004 - 11:44 #4
Jeg har en timeout på min side, og alligevel tar den kun maks 10 sekunder før den stopper.. Jeg har snakket med mit webhotel, og de har sat timeout til 1000 sekunder nu, alligevel går den død... Er der ikke noget galt med mit script?
Jeg ved godt at jeg looper hele mailprocessen, men det er vigtigt at brugerne ikke kan se hvem den ellers er sendt til...
Avatar billede keysersoze Ekspert
16. februar 2004 - 11:56 #5
har du prøvet at sætte det jeg skrev ind i toppen?
Avatar billede bruhnsweb Nybegynder
16. februar 2004 - 12:01 #6
<%
Conn_crew = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("../database/forum.mdb") & ";UID=;PWD=;"

Session.TimeOut = 200
%>
Avatar billede bruhnsweb Nybegynder
16. februar 2004 - 12:01 #7
Er det det samme?
Avatar billede keysersoze Ekspert
16. februar 2004 - 12:59 #8
det skal HEEEELT op i toppen - det aller aller først
Avatar billede bruhnsweb Nybegynder
16. februar 2004 - 13:08 #9
oki - Der går lige et par dage inden jeg kan teste det :o)

Ellers melder de sig fra... Men cool - jeg har rettet det , og det virker helt sikkert :o)
Avatar billede keysersoze Ekspert
12. marts 2004 - 15:09 #10
er du nået videre?
Avatar billede bruhnsweb Nybegynder
28. marts 2004 - 12:03 #11
Det der med Session.Timeout dutter ikke :o(

Men The Surfers forslag er lige det jeg har brug for.. Så han må gerne smide et svar :o)
Avatar billede bruhnsweb Nybegynder
28. marts 2004 - 12:24 #12
Den kommer igennem hele scriptet men melder fejl til sidst.
-------------------------------------------------------
Mailen kunne ikke afsendes grundet:
Error: 501 The following recipients could not be sent to: jim@zantiago.com, morten@tv-afdelingen.dk, morten@zantiago.com, mortentjekkervalidering, morten@tv-afdelingen.dk; 501 Bad address syntax .execute() { Trying server mail:pasmtp.tele.dk <- 220 pasmtp.tele.dk ESMTP -> EHLO web18.wannafind.dk <- 250-pasmtp.tele.dk 250-PIPELINING 250-SIZE 52428800 250-VRFY 250-ETRN 250 8BITMIME -> MAIL FROM: <- 250 Ok -> RCPT TO:nyhedsmail@gamepad.dk <- 250 Ok -> RCPT TO:jim@zantiago.com, morten@tv-afdelingen.dk, morten@zantiago.com, mortentjekkervalidering, morten@tv-afdelingen.dk <- 501 Bad address syntax -> DATA <- 354 End data with . Sending headers... Sending body... Message sent <- 250 Ok: queued as 4A3501EC319 0 of 1 servers failed }

-------------------------------------------------------
'Henter email adresser og looper dem!
Set RS = Server.CreateObject("ADODB.RecordSet")
RS.open "Select * From [modtager] order by id", Conn_crew

Do while not RS.eof
If Trim(RS("mail")) <> "" then
  strEmail = strEmail & rs("Mail") & ", "
End If
rs.movenext
loop

strEmail = left(strEmail, len(strEmail) - 2)

set msg = Server.CreateOBject( "JMail.Message" )
msg.ContentType = "text/html"
msg.Logging = true
msg.silent = true
msg.From = "nyhedsmail@domæne.dk"
msg.FromName = "Nyhedsbrev"
msg.AddRecipient  "nyhedsmail@domæne.dk"
msg.AddRecipientBCC strEmail
msg.Subject = request("titel")
msg.Body = "<html><body bgcolor='#666666' text='#333333' link='#999999'><table width='800' border='0' cellspacing='0' cellpadding='6' align='center'><tr><td bgcolor='#FFFFFF'><table width='775' border='0' cellspacing='6' cellpadding='6' align='center'><tr><td><p align='center'><img border='0' src='http://www.domæne.dk/indhold/img/logoWhite.gif''></p><p align='left'>" & request("besked") & "</p><p><center><b><a href='http://www.domæne.dk/indhold/afmeld.asp'>Du kan afmelde dig her</b></a></center></p></td></tr></table></td></tr></table></body></html>"

if not msg.Send("pasmtp.tele.dk") then
Response.Write "Mailen kunne ikke afsendes grundet:<br>"
Response.Write msg.log
else
Response.Write "Mailen er afsendt korrekt<br>"
end if
------------------------------------------------------------------
Nogen idéer ??

//Bruhn
Avatar billede thesurfer Nybegynder
28. marts 2004 - 16:16 #13
Hvis jeg ikke tager meget fejl, skal SMTP'en (mail programmet) ha' det sådan:
RCPT TO: mail@nummer1.dk
RCPT TO: mail@nummer2.dk
RCPT TO: mail@nummer3.dk

dvs 1 email adresse per RCPT TO linie..

men måske er fejlen her: "mortentjekkervalidering" <-- manger "@" og ".dk"

Fejlen:
RCPT TO:jim@zantiago.com, morten@tv-afdelingen.dk, morten@zantiago.com, mortentjekkervalidering, morten@tv-afdelingen.dk <- 501 Bad address syntax

Prøv at rette email adresserne i databasen, og prøv scriptet igen.
Avatar billede bruhnsweb Nybegynder
28. marts 2004 - 18:55 #14
Problemet er vel at hvis der er brugere som skriver noget "crap" i stedet for deres mail adresse, så skal den ikke spasse sådan ud.. Kan jeg ikke lave et tjek inden, om feltet rs(mail) indeholder et @ og et . ???
Avatar billede bruhnsweb Nybegynder
28. marts 2004 - 19:37 #15
Nope det var heller ikke det der var galt.. Wired
Avatar billede thesurfer Nybegynder
28. marts 2004 - 21:24 #16
Du kan finde et email-valideringsscript i asp, her på Eksperten.

Prøv at se om den kan sende, hvis den kun skal sende til 1 email..
I stedet for

Do while not RS.eof
If Trim(RS("mail")) <> "" then
  strEmail = strEmail & rs("Mail") & ", "
End If
rs.movenext
loop

bruger du

strEmail = rs("Mail")
' strEmail = left(strEmail, len(strEmail) - 2) ' denne linie er kommenteret, så den ikke afvikles




Du kan også prøve:



'Henter email adresser og looper dem!
Set RS = Server.CreateObject("ADODB.RecordSet")
RS.open "Select * From [modtager] order by id", Conn_crew


set msg = Server.CreateOBject( "JMail.Message" )
msg.ContentType = "text/html"
msg.Logging = true
msg.silent = true
msg.From = "nyhedsmail@domæne.dk"
msg.FromName = "Nyhedsbrev"
msg.AddRecipient  "nyhedsmail@domæne.dk"

Do while not RS.eof
If Trim(RS("mail")) <> "" then
  msg.AddRecipientBCC rs("Mail")
End If
rs.movenext
loop

msg.Subject = request("titel")
msg.Body = "<html><body bgcolor='#666666' text='#333333' link='#999999'><table width='800' border='0' cellspacing='0' cellpadding='6' align='center'><tr><td bgcolor='#FFFFFF'><table width='775' border='0' cellspacing='6' cellpadding='6' align='center'><tr><td><p align='center'><img border='0' src='http://www.domæne.dk/indhold/img/logoWhite.gif''></p><p align='left'>" & request("besked") & "</p><p><center><b><a href='http://www.domæne.dk/indhold/afmeld.asp'>Du kan afmelde dig her</b></a></center></p></td></tr></table></td></tr></table></body></html>"

if not msg.Send("pasmtp.tele.dk") then
Response.Write "Mailen kunne ikke afsendes grundet:<br>"
Response.Write msg.log
else
Response.Write "Mailen er afsendt korrekt<br>"
end if


''' husk at destruere/frigøre objekterne igen.. ellers bruger de ressoucer, unødigt:

set RS = nothing
set msg = nothing
Avatar billede bruhnsweb Nybegynder
28. marts 2004 - 22:37 #17
Så virker det :o) Takker :o)
Smid et svar ;o)
Avatar billede thesurfer Nybegynder
29. marts 2004 - 14:52 #18
Alletiders! :-)
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