ConnectStr = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" &server.mappath("subs.mdb") Set rs = Server.CreateObject("adodb.recordset") rs.Open "emails", ConnectStr, 2, 3 on error resume next While not rs.EOF strHost = "post.tele.dk" Set Mail = Server.CreateObject("Persits.MailSender") Mail.Host = strHost Mail.From = "min-email@klummer.dk" Mail.Charset = "ISO-8859-1" Mail.AddAddress rs("emails") Mail.Subject = Mail.EncodeHeader(Request("Subject")) Mail.Body = Request("comm") Mail.Send rs.MoveNext Wend If Err <> 0 Then ' error occurred strErr = Err.Description response.write "<script>alert('Mail er sendt - Check email for fejl!');" response.write "location.href='send.asp'</script>" else response.write "<script>alert('Mail er sendt!');" response.write "location.href='send.asp'</script>" response.end End If rs.close
end if %>
det er egentlig også ret godt da det checker om der er fejl i emailen og hvis der er går den videre til næste.
men det uheldige er at jeg sidder bag en firewall der har en lav time out, og jeg ved at jeg ikke når at sende alle mails før den timer ud.
Så hvordan laver jeg scriptet så den tager 100 mails af gangen og sender dem og derefter reloader siden og sender videre, og når disse 100 er sendt sætter den feltet "ersendt" i databasen til ja. ??
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Dette er et eks hvor man bruger en tæller som tæller op til 100 er send tjekker om der er flere der skal sendes også loades siden igen med id=xxx, hvor xxx er så langt den nåede i databasen. Det forudsætter du har et autonummer felt i tabellen. Den benytter så ikke en kolonne "ersendt", men du kan prøve at kikke på det:
Tilføj tælleren omkring while:
EmailSend=0 While (not rs.EOF) AND (EmailSend < 100) EmailSend = EmailSend + 1 strHost = "post.tele.dk"
----
Eftet dein if om der er fejl:
End If
if (NOT rs.EOF) AND (EmailSend < 100) then 'hvis du har et autonummer felt i tabellen kan det indsættes i linket response.redirect("fil.asp?id=rs("id")) end if
--------
I staren af koden skal du så hendte id
Set rs = Server.CreateObject("adodb.recordset") idStart = request("id") if idStart = "" then idStart = 0 end if strSQL = "SELECT * FROM emails WHERE id > " & idStart & " ORDER BY ID ASC" rs.Open strSQL, ConnectStr, 2, 3
..Hvis du ikke har et autonummer felt i emails tabellen så skrive lige igen.
Du skal nok prøve at lave nogle test for at se om alle får en mail smat ingen får 2 mail. Lige umiddelbart tror jeg at alle får en mail :)
Har du mulighed for at skrive til en tekst-fil på serveren? Så kan du evt åbne og logge hvilken ID og email adresse der er blevet set til. Samt ukommentere det kode som sender mailen, så ingen mail bliver send ved testen. Eller lav en ny tabel databasen og så indsæt i den nye tabel hvilken detr sendes til (ID,email) på samme måde som med tekst filen.
du kan prøve at kopier databasen og så havde 55 records eller sådan noget... Sæt antal pr gang ned til 10.
<% Set rs = Server.CreateObject("adodb.recordset") idStart = request("id") if idStart = "" then idStart = 0 end if strSQL = "SELECT * FROM emails WHERE id > " & idStart & " ORDER BY ID ASC" rs.Open strSQL, ConnectStr, 2, 3
if request("testmail") = "Nej" then
ConnectStr = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" &server.mappath("subs.mdb") Set rs = Server.CreateObject("adodb.recordset") rs.Open "emails", ConnectStr, 2, 3 on error resume next EmailSend=0 While (not rs.EOF) AND (EmailSend < 100) EmailSend = EmailSend + 1 strHost = "post.tele.dk"
Set Mail = Server.CreateObject("Persits.MailSender") Mail.Host = strHost Mail.From = "min-email@klummer.dk" Mail.Charset = "ISO-8859-1" Mail.AddAddress rs("emails") Mail.Subject = Mail.EncodeHeader(Request("Subject")) Mail.Body = Request("comm") Mail.Send rs.MoveNext Wend If Err <> 0 Then ' error occurred strErr = Err.Description response.write "<script>alert('Mail er sendt - Check email for fejl!');" response.write "location.href='send.asp'</script>" else response.write "<script>alert('Mail er sendt!');" response.write "location.href='send.asp'</script>" response.end End If
if (NOT rs.EOF) AND (EmailSend < 100) then response.redirect ("ghostmailer.asp?id=" & rs("id")) end if
det kører ikke rigtig, jeg har iøjeblikket 2 email i databasen skal bare lige tester den. men når jeg klikker send så ser det ud som om den sender men der kommer aldrig nogen mails til mig.
<% ConnectStr = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" &server.mappath("subs.mdb") Set rs = Server.CreateObject("adodb.recordset") idStart = request("id") if idStart = "" then idStart = 0 end if strSQL = "SELECT * FROM emails WHERE id > " & idStart & " ORDER BY ID ASC" rs.Open strSQL, ConnectStr, 2, 3
if request("testmail") = "Nej" then
Set rs = Server.CreateObject("adodb.recordset") rs.Open "emails", ConnectStr, 2, 3 on error resume next EmailSend=0 While (not rs.EOF) AND (EmailSend < 100) EmailSend = EmailSend + 1 strHost = "post.tele.dk"
Set Mail = Server.CreateObject("Persits.MailSender") Mail.Host = strHost Mail.From = "min-email@klummer.dk" Mail.Charset = "ISO-8859-1" Mail.AddAddress rs("emails") Mail.Subject = Mail.EncodeHeader(Request("Subject")) Mail.Body = Request("comm") Mail.Send rs.MoveNext Wend If Err <> 0 Then ' error occurred strErr = Err.Description response.write "<script>alert('Mail er sendt - Check email for fejl!');" response.write "location.href='ghostmailer.asp'</script>" else response.write "<script>alert('Mail er sendt!');" response.write "location.href='ghostmailer.asp'</script>" response.end End If
if (NOT rs.EOF) AND (EmailSend < 100) then response.redirect ("ghostmailer.asp?id=" & rs("id")) end if
rs.close
end if %> <HTML> <HEAD> <style> a { color:#FFFFFF;text-decoration:none; }
Set rs = Server.CreateObject("adodb.recordset") '<--slet det har du før rs.Open "emails", ConnectStr, 2, 3 '<--- slet for ikke at overskrive det recordset du har åbnet lige før.
<% ConnectStr = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" &server.mappath("subs.mdb") Set rs = Server.CreateObject("adodb.recordset") idStart = request("id") if idStart = "" then idStart = 0 end if strSQL = "SELECT * FROM emails WHERE id > " & idStart & " ORDER BY ID ASC" rs.Open strSQL, ConnectStr, 2, 3
if request("testmail") = "Nej" then
on error resume next EmailSend=0 While (not rs.EOF) AND (EmailSend < 100) EmailSend = EmailSend + 1 strHost = "post.tele.dk"
Set Mail = Server.CreateObject("Persits.MailSender") Mail.Host = strHost Mail.From = "min-email@mail.dk" Mail.Charset = "ISO-8859-1" Mail.AddAddress rs("emails") Mail.Subject = Mail.EncodeHeader(Request("Subject")) Mail.Body = Request("comm") Mail.Send rs.MoveNext Wend If Err <> 0 Then ' error occurred strErr = Err.Description response.write "<script>alert('Mail er sendt - Check email for fejl!');" response.write "location.href='ghostmailer.asp'</script>" else response.write "<script>alert('Mail er sendt!');" response.write "location.href='ghostmailer.asp'</script>" response.end End If
if (NOT rs.EOF) AND (EmailSend < 100) then response.redirect ("ghostmailer.asp?testmail=Nej&id=" & rs("id")) end if
If Err <> 0 Then ' error occurred strErr = Err.Description response.write "<script>alert('Mail er sendt - Check email for fejl!');" response.write "location.href='ghostmailer.asp'</script>" else response.write "<script>alert('Mail er sendt!');" response.write "location.href='ghostmailer.asp'</script>" response.end End If
Når de første er send stopper den vel! Da den linker til dhostmailer.asp efterfuldt af response.end. Det skal den ville ikke gøre. Som minimum skal: response.write "location.href='ghostmailer.asp'</script>" response.end fjernes.
<% ConnectStr = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" &server.mappath("subs.mdb") Set rs = Server.CreateObject("adodb.recordset") idStart = request("id") if idStart = "" then idStart = 0 end if strSQL = "SELECT * FROM emails WHERE id > " & idStart & " ORDER BY ID ASC" rs.Open strSQL, ConnectStr, 2, 3
if request("testmail") = "Nej" then
on error resume next EmailSend =0 Do While (not rs.EOF) AND (CInt(EmailSend) < 100) CInt(EmailSend) = CInt(EmailSend) + 1 strHost = "post.tele.dk"
Set Mail = Server.CreateObject("Persits.MailSender") Mail.Host = strHost Mail.From = "min-email@mail.dk" Mail.Charset = "ISO-8859-1" Mail.AddAddress rs("emails") Mail.Subject = Mail.EncodeHeader(Request("Subject")) Mail.Body = Request("comm") Mail.Send rs.MoveNext Loop If Err <> 0 Then ' error occurred strErr = Err.Description response.write "<script>alert('Mail er sendt - Check email for fejl!');" response.write "location.href='ghostmailer.asp'</script>" else response.write "<script>alert('Mail er sendt!');" response.write "location.href='ghostmailer.asp'</script>" response.end End If
if (NOT rs.EOF) AND (CInt(EmailSend) = 100) then response.redirect ("ghostmailer.asp?testmail=Nej&id=" & rs("id")) end if
rs.close
end if %>
hvad er det for en response.write "location.href='ghostmailer.asp'</script>" jeg skal fjerne ?
Når den har send tjekkes for om der er fejl i mailen:
If Err <> 0 Then ' error occurred 'Fejl i mail else 'Ikke fejl i mail: end if
Når den kommer ind i den if sætning og der ikke er nogle fejl. viser den en pop-up vindue med "Mail er sendt!" Så laver en en Javascript redirect (location.href='ghostmailer.asp) det vil sige den holder op med at sende mails.
Ups det har jeg helt glemt men for at redirecte skal response.buffer sætters til true i toppen af filen:
<% Response.Buffer = true ConnectStr = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" &server.mappath("subs.mdb") Set rs = Server.CreateObject("adodb.recordset") idStart = request("id") if idStart = "" then idStart = 0 end if strSQL = "SELECT * FROM emails WHERE id > " & idStart & " ORDER BY ID ASC" rs.Open strSQL, ConnectStr, 2, 3
-----
Jeg har prøvet at ligge din kode ind på en side og test lidt.
Jeg har fået det til at virke hvis jeg har response.buffer = true på samt fjerne denne if:
If Err <> 0 Then ' error occurred strErr = Err.Description response.write "<script>alert('Mail er sendt - Check email for fejl!');" response.write "location.href='ghostmailer.asp'</script>" else response.write "<script>alert('Mail er sendt!');" response.write "location.href='ghostmailer.asp'</script>" response.end End If
<% Response.Buffer = true ConnectStr = "Driver={Microsoft Access Driver (*.mdb)}; DBQ=" &server.mappath("subs.mdb") Set rs = Server.CreateObject("adodb.recordset") idStart = request("id") if idStart = "" then idStart = 0 end if strSQL = "SELECT * FROM emails WHERE id >= " & idStart & " ORDER BY ID ASC" rs.Open strSQL, ConnectStr, 2, 3
if request("testmail") = "Nej" then
on error resume next EmailSend =0 Do While (not rs.EOF) AND (CInt(EmailSend) < 10) CInt(EmailSend) = CInt(EmailSend) + 1 strHost = "post.tele.dk"
Set Mail = Server.CreateObject("Persits.MailSender") Mail.Host = strHost Mail.From = "min-email@mail.dk" Mail.Charset = "ISO-8859-1" Mail.AddAddress rs("emails") Mail.Subject = Mail.EncodeHeader(Request("Subject")) Mail.Body = Request("comm") Mail.Send rs.MoveNext Loop 'If Err <> 0 Then ' error occurred 'strErr = Err.Description 'response.write "<script>alert('Mail er sendt - Check email for fejl!');" 'response.write "location.href='ghostmailer.asp'</script>" 'Else 'response.write "nogle mails send" 'end if
if (NOT rs.EOF) AND (CInt(EmailSend) = 10) then response.redirect ("ghostmailer.asp?testmail=Nej&id=" & rs("id")) end if
rs.close
end if %>
Når jeg kører det så sender den alle mail på en gang og reloader ikke for hver 10'ende mail. Jeg har kommenteret if sætningen ud.
Nu gør den noget jeg ikke helt kan gennemskue. De første 10 mails kommer med overskrift og tekst. De næste 40 er uden indhold men den reloader ikke, men når den er færdig hopper den til ghostmailer.asp?testmail=Nej&id=5796, men den sender alle på en gang stadig. Ps. har du icq ??
Ja det er fordi teksten ligger i formen og så man reloader siden er det ikke længere POST så derfor skal teksten overføres i querystringen ligesom Testmail=Nej eller skal det ligges ind i en session som så kan læses ...
jeg har fået det til at kører sådan: response.redirect ("ghostmailer.asp?testmail=Nej&Subject=" & Request("Subject") & "&comm= " & Request("comm") & "&id=" & rs("id"))
Det virker ok. skulle den ikke reloade siden for hver 10 mail den sender ??
Når jeg har skrevet og trykket send, så står begynder den blå streg i bunden at bevæge sig, efter ca 1 minut loader den siden ghostmailer.asp?testmail=Nej&Subject=blablalba&&comm=NogetComm&id=5796 og den er færdig. Når jeg checker mail får jeg 50
Jo men du kan nok ikke nå at se det... For så lænde den sender mail vil eks. IE's e drejese rundt. Når de 10 er sendt så laver man redirect til samme side og igen vil "e" drejse rundt. "e" holder ført op med at dreje rundt når hele siden er loaded, samt returneret fra serveren.
Hvis den ikke reloaded siden vil du kun modtage 10 mail. Du kan prøve at udkommentere redirect og se om du så ikke kun modtager 10 mails.
oki men du har fået point aligevel. Ps. jeg har sat counteren til 1 også lavet en update der skriver ok i et felt så jeg kan holde øje med hvor mange der er sendt.
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.