Avatar billede maxikoll Nybegynder
01. april 2002 - 13:52 Der er 8 kommentarer og
2 løsninger

Nyhedsbrev med database udtræk

Hej, hvordan, hvis man kan, laver man nemmest et nyhedsbrev der trækker fx. top 5 ud og sender til alle de registrede emails via JMail.

Jeg har løst første problem med at sende ud til alle i databasen, men når man så vil lave mere looping i JMail går det helt i kage, som en uendelig lykke, nogen der har nogen gode tips? :)
Avatar billede medions Nybegynder
01. april 2002 - 13:58 #1
kan jeg ik' prøve at se noget kode?

//>Rune
Avatar billede arriva Nybegynder
01. april 2002 - 13:59 #2
husk at lave dit loop som f.eks.

do until rs.eof
jmail script
rs.movenext
loop
Avatar billede medions Nybegynder
01. april 2002 - 14:03 #3
eller:

While Not rs.EOF
jmailscript
rs.MoveNext
Wend

//>Rune
Avatar billede maxikoll Nybegynder
01. april 2002 - 14:04 #4
<%
Set Conn = Server.CreateObject("ADODB.Connection")
conn.Open "DBQ="&(Server.MapPath(".")) &"\mailing.mdb; DefaultDir=DBQ="&(Server.MapPath(".")) &"\;Driver={Microsoft Access Driver (*.mdb)};"

    SQL = "SELECT * from mailingliste"
    set send = conn.execute( SQL )
    do while not send.eof
    on error resume next
    email = send("email")

Set JMail = Server.CreateObject("JMail.SMTPMail")
JMail.ServerAddress = "smtp.ditdomain.dk"

JMail.Charset = "iso-8859-1"
JMail.ContentTransferEncoding = "8bit"
   
JMail.Sender = "navn@ditdomain.dk"
JMail.Subject = "Test"
JMail.AddRecipient send("email")

conn.Open "DBQ="&(Server.MapPath(".")) &"\news.mdb; DefaultDir=DBQ="&(Server.MapPath(".")) &"\;Driver={Microsoft Access Driver (*.mdb)};"

    SQLNews = "SELECT TOP 5 * from News"
    set rs = conn.execute( SQLNews )
    do while not rs.eof
    on error resume next
    NewsID = rs("NewsID")
    URL = rs("URL")
    Added = rs("Added")
    News = rs("News")

JMail.HTMLBody = "<table width='400' border='0' cellspacing='1' cellpadding='1'>"
JMail.HTMLBody = JMail.HTMLBody & "<tr><td><b>" & Title & "</b></td></tr>"
JMail.HTMLBody = JMail.HTMLBody & "<tr><td><i>Skrevet: " & Added & "</i></td></tr>"
JMail.HTMLBody = JMail.HTMLBody & "<tr><td>" & News & "</td></tr>"
JMail.HTMLBody = JMail.HTMLBody & "</table>"
   
rs.movenext
loop
con.close

JMail.Priority = 3

JMail.Execute
set JMail = nothing
%>

<%
send.movenext
loop
conn.close
%>
Avatar billede maxikoll Nybegynder
01. april 2002 - 14:05 #5
Som det er der laver den kun et udtræk hvilket også er logisk nok da JMail nok ikke kan lave flere JMail.HTMLBody? :)
Avatar billede medions Nybegynder
01. april 2002 - 14:16 #6
Prøv lige med denne:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
conn.Open "DBQ="&(Server.MapPath(".")) &"\mailing.mdb; DefaultDir=DBQ="&(Server.MapPath(".")) &"\;Driver={Microsoft Access Driver (*.mdb)};"

    SQL = "SELECT * from mailingliste"
    set send = conn.execute( SQL )
    do while not send.eof
    on error resume next
    email = send("email")

Set JMail = Server.CreateObject("JMail.SMTPMail")
JMail.ServerAddress = "smtp.ditdomain.dk"

JMail.Charset = "iso-8859-1"
JMail.ContentTransferEncoding = "8bit"
   
JMail.Sender = "navn@ditdomain.dk"
JMail.Subject = "Test"
JMail.AddRecipient send("email")

conn.Open "DBQ="&(Server.MapPath(".")) &"\news.mdb; DefaultDir=DBQ="&(Server.MapPath(".")) &"\;Driver={Microsoft Access Driver (*.mdb)};"

    SQLNews = "SELECT TOP * from News"
    set rs = conn.execute( SQLNews )
    For i = 0 To 4
    i=i+1
    on error resume next
    NewsID = rs("NewsID")
    URL = rs("URL")
    Added = rs("Added")
    News = rs("News")

JMail.HTMLBody = "<table width='400' border='0' cellspacing='1' cellpadding='1'>"
JMail.HTMLBody = JMail.HTMLBody & "<tr><td><b>" & Title & "</b></td></tr>"
JMail.HTMLBody = JMail.HTMLBody & "<tr><td><i>Skrevet: " & Added & "</i></td></tr>"
JMail.HTMLBody = JMail.HTMLBody & "<tr><td>" & News & "</td></tr>"
JMail.HTMLBody = JMail.HTMLBody & "</table>"
   
    rs.movenext
    Next
con.close

JMail.Priority = 3

JMail.Execute
set JMail = nothing
%>

<%
send.movenext
loop
conn.close
%>

//>Rune
Avatar billede coltau Juniormester
01. april 2002 - 15:12 #7
Du bruger samme connection til to databaser og ændre connection inden du er færdig med at bruge udtrækket.
Lav to connections på denne måde og fjern linien: con.close ?

<%
Set Conn = Server.CreateObject("ADODB.Connection")
conn.Open "DBQ="&(Server.MapPath(".")) &"\mailing.mdb; DefaultDir=DBQ="&(Server.MapPath(".")) &"\;Driver={Microsoft Access Driver (*.mdb)};"
Set Conn1 = Server.CreateObject("ADODB.Connection")
conn1.Open "DBQ="&(Server.MapPath(".")) &"\news.mdb; DefaultDir=DBQ="&(Server.MapPath(".")) &"\;Driver={Microsoft Access Driver (*.mdb)};"

SQL = "SELECT * from mailingliste"
set send = conn.execute( SQL )
do while not send.eof
  on error resume next
  email = send("email")

  Set JMail = Server.CreateObject("JMail.SMTPMail")
  JMail.ServerAddress = "smtp.ditdomain.dk"

  JMail.Charset = "iso-8859-1"
  JMail.ContentTransferEncoding = "8bit"
   
  JMail.Sender = "navn@ditdomain.dk"
  JMail.Subject = "Test"
  JMail.AddRecipient send("email")

  SQLNews = "SELECT TOP 5 * from News"
  set rs = conn1.execute( SQLNews )
  do while not rs.eof
    on error resume next
    NewsID = rs("NewsID")
    URL = rs("URL")
    Added = rs("Added")
    News = rs("News")

    JMail.HTMLBody = "<table width='400' border='0' cellspacing='1' cellpadding='1'>"
    JMail.HTMLBody = JMail.HTMLBody & "<tr><td><b>" & Title & "</b></td></tr>"
    JMail.HTMLBody = JMail.HTMLBody & "<tr><td><i>Skrevet: " & Added & "</i></td></tr>"
    JMail.HTMLBody = JMail.HTMLBody & "<tr><td>" & News & "</td></tr>"
    JMail.HTMLBody = JMail.HTMLBody & "</table>"
   
    rs.movenext
  loop
  ' con.close LINIE FJERNES
  JMail.Priority = 3

  JMail.Execute
  set JMail = nothing

  send.movenext
loop
conn.close
conn1.close

%>
Avatar billede maxikoll Nybegynder
01. april 2002 - 15:40 #8
Har lavet om i den, nu laver den heller ikke så mange loops, har man fx 5 nyheder og 10 mails, så ville der være 50 loops, nu med denne ville der kun være 11 :)

<%@ Language=VBScript %>

<%
Set Conn = Server.CreateObject("ADODB.Connection")
conn.Open "DBQ="&(Server.MapPath(".")) &"\news.mdb; DefaultDir=DBQ="&(Server.MapPath(".")) &"\;Driver={Microsoft Access Driver (*.mdb)};"

    SQLNews = "SELECT TOP 5 * from News ORDER BY NewsID DESC"
    set rs = conn.execute( SQLNews )
    do while not rs.eof
    Title = rs("Title")
    NewsID = rs("NewsID")
    URL = rs("URL")
    Added = rs("Added")
    News = rs("News")

myString = myString & "<table align='center' width='500' border='0' cellspacing='1' cellpadding='1'><tr><td><b>" & Title & "</b></td></tr><tr><td><i>Skrevet: " & Added & "</i></td></tr><tr><td>" & News & "</td></tr></table>"

rs.movenext
loop

Set Conn = Server.CreateObject("ADODB.Connection")
conn.Open "DBQ="&(Server.MapPath(".")) &"\mailing.mdb; DefaultDir=DBQ="&(Server.MapPath(".")) &"\;Driver={Microsoft Access Driver (*.mdb)};"

    SQL = "SELECT * from mailingliste"
    set send = conn.execute( SQL )
    do while not send.eof
    on error resume next
    email = send("email")

Set JMail = Server.CreateObject("JMail.SMTPMail")
JMail.ServerAddress = "smtp.ditdomain.dk"

JMail.Charset = "iso-8859-1"
JMail.ContentTransferEncoding = "8bit"
   
JMail.Sender = "navn@ditdomain.dk"
JMail.Subject = "Test"
JMail.AddRecipient send("email")

JMail.HTMLBody = myString

JMail.Priority = 3

JMail.Execute
set JMail = nothing
%>

<%
send.movenext
loop

conn.close
%>
Avatar billede maxikoll Nybegynder
01. april 2002 - 15:42 #9
at jeg startede sådan

JMail.HTMLBody = "lala"

og ikke JMail.HTMLBody = JMail.HTMLBody lukkede vel også for den, i får bare 50 each for at rodde med det :D

btw coltau, pride er aber :D?
Avatar billede medions Nybegynder
02. april 2002 - 14:26 #10
Thx 4 Poinz
//>Rune
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