22. august 2004 - 11:37Der er
5 kommentarer og 1 løsning
Visuel bekræftigelse ved brug af nyhedsbrev
Jeg bruger nedenstående script til at udsende nyhedsbreve med og det virker ok. Det der kan blive et problem er, at fra man begynder at sende nyhedsbreve til f.eks. 1000 modtagere går der en rum tid, og brugeren kan være i tvivl om hvorvidt der overhovedet sker noget. Kan der ikke laves noget således der skrives f.eks. "Udsender nr 1", "udsender nr 2" o.s.v. altså en udbygning af mit loop. Som det er i øjeblikket sker der ikke en dyt på skærmen før udsendelsen er færdig. Håber det var uddybende nok.
<% if request.querystring("action") = "submitnews" then tekst = "teksten i nyhedsbrevet"
SQL = "SELECT * FROM TBL_nyhedsbrev_modtagere" set send = conn.execute(SQL) If send.eof then %> <B>Der er ingen modtagere tilmeldt.</B> <% else do while not send.eof on error resume next
if not objMailer.Send(smtpserver) then Response.Write "<BR><FONT COLOR=""#FF0000""><B>" & send("modtager") & ": FEJL:" & objMailer.log &"</B></FONT><BR><BR>" else response.write send("modtager") & ": Nyhedsbrev afsendt<BR>" end if objMailer.close set objMailer = nothing send.movenext loop send.close set send = nothing conn.Close set conn = nothing end if %>
Så kan du i loopet tilføje linjen Response.Flush evt. efter send.Movenext det har ikke den store betydning hvor det står og man kunne evt gøre sådan den opdaterede for hver 50'mails
send.movenext Response.Flush loop
Så vil den udskrive hvem den har sendt til da det er i koden i denne linje: response.write send("modtager") & ": Nyhedsbrev afsendt<BR>"
Okay, så langt så godt. Nu har jeg fjernet tabellerne fra udsendelsesdelen og så virker det godt nok, dog vil jeg gerne lige have pyntet på det hvis du også vil assisterer med det inden for de 200 point ?
Nu ser scriptet således ud:
<% if request.querystring("action") = "submitnews" then tekst = "teksten i nyhedsbrevet"
SQLcount = "select count (*) as antal from TBL_nyhedsbrev_modtagere" Set rscount = conn.Execute(SQLcount) totalcount = rscount("antal") rscount.close set rscount = nothing
SQL = "SELECT * FROM TBL_nyhedsbrev_modtagere" set send = conn.execute(SQL) If send.eof then %> <B>Der er ingen modtagere tilmeldt.</B> <% else lngNum = 0
objMailer.ClearRecipients objMailer.AddRecipient send("modtager") objMailer.HTMLBody = tekst objMailer.Send(smtpserver)
lngNum = lngNum + 1 response.write "Udsender til modtager nr "& lngNum &" ud af " & totalcount & " modtagere."
send.movenext loop objMailer.close set objMailer = nothing send.close set send = nothing conn.Close set conn = nothing end if %>
Det gør at den skriver min response.write sætning ud efter hinanden i en lang række. Kan det laves således at den skifter sætningen ud hver gang den fyrer en mail afsted således det giver lidt mere mening ?
Under alle omstændigheder må du godt lige smide et svar eagleeye.
Jeg har forsøgt med en <div> hvor man med et scritp kan opdatere feltet. Dog vil den hver gang udskrive scriptet som fylder lidt. Tallet "hopper" godt nok lidt jeg ved ikke om det er browseren som ikke helt kan følge med?? Jeg har også kun testet med en for i=0 to xxx så det går jo også hurtigs hvis man ikke sender mails.
Jeg har prøvet at lave en if sætning så den kun opdater for hver 15'tene mail:
if (lngNum mod 15 = 0) or lngNum=totalcount then %> <script> document.getElementById("statustxt").innerHTML = "<%=lngNum%>"; </script> <% end if
Så din kode bliver:
<% if request.querystring("action") = "submitnews" then tekst = "teksten i nyhedsbrevet"
SQLcount = "select count (*) as antal from TBL_nyhedsbrev_modtagere" Set rscount = conn.Execute(SQLcount) totalcount = rscount("antal") rscount.close set rscount = nothing
SQL = "SELECT * FROM TBL_nyhedsbrev_modtagere" set send = conn.execute(SQL) If send.eof then %> <B>Der er ingen modtagere tilmeldt.</B> <% else %> Sender mail nr. <div id="statustxt"></div> ud af ialt <%=totalcount%><br> <%
objMailer.ClearRecipients objMailer.AddRecipient send("modtager") objMailer.HTMLBody = tekst objMailer.Send(smtpserver)
lngNum = lngNum + 1 'response.write "Udsender til modtager nr "& lngNum &" ud af " & totalcount & " modtagere." if (lngNum mod 15 = 0) or lngNum=totalcount then %> <script> document.getElementById("statustxt").innerHTML = "<%=lngNum%>"; </script> <% end if Response.Flush
send.movenext loop objMailer.close set objMailer = nothing send.close set send = nothing conn.Close set conn = nothing end if %>
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.