Avatar billede goose Nybegynder
22. august 2004 - 11:37 Der 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

Set objMailer = Server.CreateObject("JMail.Message")
objMailer.Logging = true
objMailer.silent = true
objMailer.ClearRecipients
objMailer.From = afsenderemail
objMailer.Subject = emne
objMailer.AddRecipient send("modtager")
objMailer.HTMLBody = tekst

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
%>

/Goose
Avatar billede eagleeye Praktikant
22. august 2004 - 11:44 #1
Du kan tilføje:

<% response.buffer=true %>

i toppen af koden.

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>"
Avatar billede goose Nybegynder
22. august 2004 - 12:14 #2
Det hjælper desværre ikke :o(

Kan det være fordi min side er bygget op i tabeller og at hele siden skal være loaded inden den viser resultatet ?

/Goose
Avatar billede eagleeye Praktikant
22. august 2004 - 15:06 #3
Ja det er vist rigtig. Den viser ikke tabellen før den er har alle "tags" til den.
Avatar billede goose Nybegynder
23. august 2004 - 12:38 #4
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

Set objMailer = Server.CreateObject("JMail.Message")
objMailer.Logging = true
objMailer.silent = true
objMailer.Subject = emne
objMailer.From = afsenderemail

do while not send.eof
on error resume next

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.

/Goose
Avatar billede eagleeye Praktikant
24. august 2004 - 00:15 #5
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>
<%

lngNum = 0

Set objMailer = Server.CreateObject("JMail.Message")
objMailer.Logging = true
objMailer.silent = true
objMailer.Subject = emne
objMailer.From = afsenderemail

do while not send.eof
on error resume next

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
%>
Avatar billede goose Nybegynder
24. august 2004 - 14:20 #6
Tak for hjælpen eagleeye :o)

/Goose
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