10. november 2006 - 11:05Der er
14 kommentarer og 1 løsning
Send nyhedsbreve afsted i "pakker"
Hej
Jeg skal sende et nyhedsbrev afsted til de 500-1000 mennesker der er på listen. (via Jmail)
Jeg går ud fra, at det ikke er holdbart at afsende dem alle på én gang, så derfor tænker jeg på at sende dem i "pakker". F.eks. 25 mails hvert 2. minut over 40 minutter (hvilket svarer til 500 mails) Kom gerne med forslag til en bedre løsning!!
Spørgsmålet er: Hvordan tilpasser jeg scriptet sådan, at den afsender mailsene med pauser...?
Der skal jo være en form for timer der styrer det, og der er forskellige muligheder.
Scheduled Task (Planlagte opgaver) i kontrolpanelet. Hvis du har en MSSQL kan du bruge SQL Server Agent Du kan lave det så det kører i MSIE, og så lave en forsinket reload med JAvaScript
jeg kan da godt prøve at flette en mulighed sammen.:-)
hvad med noget i stilen af det her:
<% number = request.querystring("number") if not isNumeric(number) or number < 0 then number = 0 end if
sql = "SELECT TOP 25 email, navn FROM tabel WHERE id >= " & number & " order by id asc" 'vælger de 25 næste mails. her skal feltnavnene rettes til. set rsEmails = rs.execute(sql) 'der skal være en connection til databasen med navn rs.
if not rsEmails.eof then response.write <html><head><META HTTP-EQUIV=""refresh"" content=""120;URL=thispage.asp?number=" & (number+25) & """></head><body>Sending mails number: " & number & " to " & (number+25) & "<br>Please do not navigate away from this site!!</body></html>" Dim objMail ' Definer en variabel til mail objektet while not rsEmails.eof
Set objMail = Server.CreateObject("JMail.Message")
' Tilføj emnet på e-mailen objMail.Subject = "nyhedsmail fra her fra."
' Til sidst skal vi så bare have tilføjet indholdet i mailen objMail.Body = "Hejsa" & vbCrLf & vbCrLf & "Hermed en lille test-mail."
objMail.Logging = True objMail.Silent = True
objMail.Send("mail.ditdomæne.dk")
rsEmails.movenext wend rsEmails.close set rsEmails = nothing
else response.write "All mails send succesfully" end if %>
jeg er ret sikker på dette rimelig simpelt kan sættes til at sende 25 mails afsted hvert andet minut. Nu skal der så blot rettes navne på felter i databasen, og sættes en connection til databasen. Nu er det eneste problem så... hvordan modtager du indholdet til mail-bodyen? er det en request.form eller...? og det samme med meddelsens emne...
Det er måske ikke nogen specielt pæn løsning, men den burde virke:-)
Ikke helt jo, for siden reloader sig selv, og derfor er formen ikke tilgængelig anden gang du skal sende til 2. omgang...
hvordan ser teksten ud, altså når du får den fra din request.form, er det så med html-tags osv? hvis det er det, så er det jo ikke det store problem, så kan vi bare lave en midlertidig txt fil, eller også lave et indlæg i databasen, hvilket nok er den bedste løsning, og så hente det ud derfra....
<% number = request.querystring("number") if not isNumeric(number) or number < 0 then number = 0 end if
number_pr_page = 25 'antal mails der sendes af gangen..
sql = "SELECT TOP 25 email, navn FROM tabel WHERE id >= " & number & " order by id asc" 'vælger de 25 næste mails. her skal feltnavnene rettes til. set rsEmails = rs.execute(sql) 'der skal være en connection til databasen med navn rs.
if not rsEmails.eof then response.write <html><head><META HTTP-EQUIV=""refresh"" content=""120;URL=thispage.asp?number=" & (number+number_pr_page) & """></head><body>Sending mails number: " & number & " to " & (number+number_pr_page) & "<br>Please do not navigate away from this site!!</body></html>" Dim objMail ' Definer en variabel til mail objektet while not rsEmails.eof
Set objMail = Server.CreateObject("JMail.Message")
hov, og forresten, lavede ikke de store ændringer i den kode jeg lige postede, ved ike helt hvorfor den skulle med, men lavede da i hvert fald en enkelt lille ændring i toppen :-)
laver lige en lille extension med text-filer... så burde det være i orden... Så er der bare nogle småvariable du skal rette til så kan du bruge det skulle jeg mene....
Når der klikkes på submit knappen, bliver det hele først smidt i en database, således at selve mail-designet forbliver tilgængeligt i wysiwyg-editoren til næste gang, der skal sendes nyhedsmail asted.
Og ja, det incl. HTML tags
Forresten hvorfor hedder det "JMail.Message" - Hvad er forskellen fra JMail.SMTPMail ?
if request.servervariables("request_method") = "POST" then 'det er første gang der postes, og der skal gemmes noget data i en text-fil som vi så kan hente igen senere.
*******Her skal gemmes i databasen!!!
end if
num = request.querystring("number") if not isNumeric(num) or num < 1 or num = "" then num = 1 end if
number_pr_page = 25 'antal mails der sendes af gangen..
sql = "SELECT TOP " & number_pr_page & " email, navn FROM emails WHERE id >= " & num & " order by id asc"
'vælger de 25 næste mails. her skal feltnavnene rettes til. set rsEmails = rs.execute(sql) 'der skal være en connection til databasen med navn rs.
if not rsEmails.eof then
response.write "<html><head><META HTTP-EQUIV=""refresh"" content=""120;URL=" & request.servervariables("script_name") & "?number=" & (num+number_pr_page) & """></head><body>Sending mails number: " & num & " to " & (num+number_pr_page) & "<br>Please do not navigate away from this site!!</body></html>" Dim objMail ' Definer en variabel til mail objektet while not rsEmails.eof
Set objMail = Server.CreateObject("JMail.Message")
Det kommer vel også an på hvilken udgående server man har..? Nogle servere tillader vel mere end andre.
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.