Avatar billede totalpc Seniormester
14. marts 2008 - 14:32 Der er 10 kommentarer og
1 løsning

asp jmail - evt. softspot som har hjulpet indtil videre

<!--#include file="db.inc"-->
<%

aktiv="nej"

ID = Request.QueryString("id")

strSQL = "SELECT DISTINCT u.email, b.overskrift " & _
    "FROM (blog b " & _
    "INNER JOIN bruger u ON u.brugernavn = b.forfatter) " & _
    "INNER JOIN kommentar k ON k.blogid = b.id " & _
    "WHERE b.id = " & ID & " " & _
    "AND u.send_email = true"

set rs = Conn.Execute(strSQL)
num = 0
    while not rs.eof
    if rs("email") <> "" then
        Set JMail = Server.CreateObject("JMail.SMTPMail")
                JMail.ServerAddress = "localhost"
        JMail.ContentType = "text/html"
                JMail.Charset = "iso-8859-1"
                JMail.ContentTransferEncoding = "8bit"
                JMail.Sender = "robot@xxx.dk"
                JMail.Subject = "Der er oprettet en nyhed på xxx.dk"
                JMail.AddRecipient rs("email")
                JMail.HTMLBody = "Hej"
                JMail.HTMLBody = "Hej "& rs("brugernavn") & "<br><br>Der er en ny kommentar til nyheden <b><i>" & rs("overskrift") &"</b></i> som du deltager i.<br>Log på <a href=""http://v0011cvc/default.asp?sitepage=blogview_indlag&id="&id&""">http://www.xxx.dk</a> og se kommentaren.<br><br>Mvh Kristian"
                JMail.Priority = 3
                If aktiv="ja" then
            JMail.Execute
              End if
    response.write jmail.htmlbody
    response.write ("<br>")
    response.write ("----------------------------------------------------")
    response.write ("<br>")
 
              set JMail = nothing
    else
    End If
  num = num + 1 ' tilføjer 1 til varariablen for hvert gennemløb
          rs.MoveNext
          Wend
          Response.write "<span class='text' align='center'>Nyhedsmailen blev sendt til <b>" & num & " </b> brugere<br>"
         
'Reset server objects
Conn.Close
Set Conn = Nothing
Set rs  = Nothing


'Response.Redirect "default.asp?sitepage=blogview_indlag&id=" & id
%>

Jeg har 2 problemer.

1. Den sender konsekvent kun til 1 bruger selvom jeg har lavet et lille test scenarie hvor den skal sende til 2

2. Jeg ville gerne kunne skriver Hej rs("brugernavn") på den jeg skriver til. Det kan jeg bare ikke lige gennemskue. Hvis jeg selecter b.brugernavn så er det kun blog opretter den skriver som navn og skifter ikke.


Id    Brugernavn    Kodeord    send_email    email                       
1    Kristian    redzone    SAND    krc@bec.dk                       
2    test    test    SAND    test@test.dk                       
3    test2    test2    SAND    test2@test.dk                       
4    test3    test3    FALSK                           
5    test4    test4    SAND    test4@test.dk                       
6    test5    test5    FALSK    test5@test.dk                       
7    test6    test6    SAND                           
                                       
                                       
Scenarie nr    Bruger    Handling            Resultat        Script            problem
1    kristian    opret blogindlæg            email til 3        send_email.asp            ok
3    test    opret kommentar til scenarie 1            email til 1        kommentar_Send_email.asp           
4    kristian    opret kommentar til scenarie 1            email til 1        kommentar_Send_email.asp           
5    test4    opret kommentar til scenarie 1            email til 2        kommentar_Send_email.asp            sender kun til 1 nemlig kristian
Avatar billede softspot Forsker
14. marts 2008 - 15:12 #1
Jeg tror det er fordi jeg ikke har fået den idé bagt færdig inden du fik den... :|

Jeg får jo kun lavet en join på blog-indlægets forfatter og ikke på kommentarens forfatter. Det der nok bør gøres er at der laves en UNION på to delopslag, hvor det ene selecter brugernavn og email til selve blog-indlæget og det andet selecter brugernavn og email til kommentarerne. Noget i stil med dette (nu skriver jeg kun lige SQL-sætningen, altså ikke formateret som en VBScript-streng, for overskuelighedens skyld - jeg tror den er kompliceret nok uden at der er streng-fnidder blandet ind i sagen :)):

SELECT blu.*, bl.overskrift
FROM (
  SELECT u1.email, u1.brugernavn, b.id AS blogid
  FROM blog b
  INNER JOIN bruger u1 ON u1.brugernavn = b.forfatter
  WHERE b.id = @id
  AND u2.send_email = true
UNION
  SELECT u2.email, u2.brugernavn, k.blogid AS blogid
  FROM kommentar k
  INNER JOIN bruger u2 ON u2.brugernavn = k.forfatter
  WHERE k.blogid = @id
  AND u2.send_email = true
) blu
INNER JOIN blog bl ON bl.id = blu.blogid

hmmm... noget i den stil. Prøv lige om det giver et bedre resultat. :)
Avatar billede totalpc Seniormester
14. marts 2008 - 15:25 #2
Hmmm jeg er lidt i tvivl om at sætte den ind?
Der skal vel de der streng fnidder ind ik?
Avatar billede totalpc Seniormester
14. marts 2008 - 15:32 #3
Jeg har rettet til den rigtige id... tror jeg og du kan se koden her.
den giver så en fejl. Jeg kan simpelhen ikke overskue den sql så håber du kan hjælpe hehe

strsql = "SELECT blu.*, bl.overskrift " & _
"FROM ( " & _
  "SELECT u1.email, u1.brugernavn, b.id AS blogid " & _
  "FROM blog b " & _
  "INNER JOIN bruger u1 ON u1.brugernavn = b.forfatter " & _
  "WHERE b.id = " & ID & " " & _
  "AND u2.send_email = true " & _
"UNION " & _
  "SELECT u2.email, u2.brugernavn, k.blogid AS blogid " & _
  "FROM kommentar k " & _
  "INNER JOIN bruger u2 ON u2.brugernavn = k.forfatter " & _
  "WHERE k.blogid = " & ID & " " & _
  "AND u2.send_email = true " & _
") blu " & _
"INNER JOIN blog bl ON bl.id = blu.blogid "

response.write strsql

SELECT blu.*, bl.overskrift FROM ( SELECT u1.email, u1.brugernavn, b.id AS blogid FROM blog b INNER JOIN bruger u1 ON u1.brugernavn = b.forfatter WHERE b.id = 57 AND u2.send_email = true UNION SELECT u2.email, u2.brugernavn, k.blogid AS blogid FROM kommentar k INNER JOIN bruger u2 ON u2.brugernavn = k.forfatter WHERE k.blogid = 57 AND u2.send_email = true ) blu INNER JOIN blog bl ON bl.id = blu.blogid
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/kommentar_send_email.asp, line 33
Avatar billede softspot Forsker
14. marts 2008 - 15:55 #4
Prøv lige denne version i første omgang:

strsql = "SELECT blu.*, bl.overskrift " & _
"FROM ( " & _
  "SELECT u1.email, u1.brugernavn, b.id AS blogid " & _
  "FROM blog b " & _
  "INNER JOIN bruger u1 ON u1.brugernavn = b.forfatter " & _
  "WHERE b.id = " & ID & " " & _
  "AND u1.send_email = true " & _
"UNION " & _
  "SELECT u2.email, u2.brugernavn, k.blogid AS blogid " & _
  "FROM kommentar k " & _
  "INNER JOIN bruger u2 ON u2.brugernavn = k.forfatter " & _
  "WHERE k.blogid = " & ID & " " & _
  "AND u2.send_email = true " & _
") blu " & _
"INNER JOIN blog bl ON bl.id = blu.blogid "
Avatar billede softspot Forsker
26. marts 2008 - 08:42 #5
Er du kommet videre med denne?
Avatar billede totalpc Seniormester
26. marts 2008 - 10:58 #6
Hej
Sorry...har holdt påskeferie og glemt alt om det her :)
Tester i løbet af de næste par dage så hører du lige besked!
Tak for tålmodigheden:)
Avatar billede softspot Forsker
03. april 2008 - 12:48 #7
OK...
Avatar billede totalpc Seniormester
03. april 2008 - 12:56 #8
Hey...
Umiddelbart vil jeg sige at det virker efter hensigten...
Men jeg har ikke testet så meget endnu..smid et svar så laver jeg et nyt spgm hvis det ikke virker.. Har lidt travlt de næste par uger på arbejde så når simpelhen ikke at kigge på det!
Avatar billede softspot Forsker
08. april 2008 - 22:47 #9
OK, hvis det er sådan du vil have det :)
Avatar billede totalpc Seniormester
09. april 2008 - 08:35 #10
Det bliver jeg nød til....jeg er lige inde i en hård periode og når ikke at kigge mere på det før om et par uger....æv... Men tak for hjælpen 'so far'
Avatar billede softspot Forsker
09. april 2008 - 08:43 #11
Velbekomme og tak for point :)
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