Avatar billede trekkies Juniormester
01. januar 2005 - 19:27 Der er 32 kommentarer og
1 løsning

J-Mail problemer

Hej alle sammen

Jeg er ved at lave et lille nyhedssystemm hvor at jeg kan sende breve fra, det virker fint.
Det virker ikke hvis jeg kun vil sende et brev til dem hvor at deres "brev" er yes.

Her er min kode:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../mindatabase.mdb")

strSQL = "SELECT * FROM user WHERE brev =" & "yes"
'Conn.Execute(strSQL)
set rs = conn.execute(strSQL)
%>

<%
DO WHILE NOT rs.EOF
id = rs("id")
navn = rs("navn")
godkend=rs("godkend")
mail=rs("mail")
brugernavn = rs("brugernavn")
brev = rs("brev")
%>

<%
Set msg = Server.CreateOBject( "JMail.Message" )

msg.Logging = True
msg.Silent = True
msg.From = "mail@adresse.dk"  'Afsender e-mail
msg.FromName = "www.darkskies.dk" 'Afsender navn
msg.Charset = "iso-8859-1"

msg.AddRecipient "mail@adresse.dk"
'msg.AddRecipient = rs("mail")
msg.Subject = Request.Form("overskrift")
msg.Body = "Hej " & rs("brugernavn")
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & Request.Form("besked")
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & "Med venlig hilsen"
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & "darkskies.dk"
'msg.Send("smtp.mail.dk" ) 'TDC mail server
msg.Send("smtp.tele2.dk" ) 'Tele2 mail server
'msg.Send("mail.dandomain.dk") 'Dandomain mail server

'Response.write "Meddelelsen er nu sendt!"

Set msg = nothing
%>

Som den er nu, så virker den fint, men hvis jeg retter denne linie fra:
msg.AddRecipient "mail@adresse.dk"

til:
'msg.AddRecipient = rs("mail")

Så fejler den, og kommer med denne fejl meddelse:
Fejltype:
Der opstod en Microsoft VBScript-kørselsfejl (0x800A01B6)
Objektet understøtter ikke denne egenskab eller metode: 'AddRecipient'
/darkskies/admin/brev_gem_incl.asp, line 30

Ved I hvordan man kan få den til at køre?

Mvh
Martin Jørgensen
Avatar billede mini-me Nybegynder
01. januar 2005 - 19:30 #1
strSQL = "SELECT * FROM user WHERE brev =" & "yes" skal være...

strSQL = "SELECT * From User where Brev=yes"
Avatar billede trekkies Juniormester
01. januar 2005 - 19:33 #2
Det virker ikke, jeg får den samme fejl.
Avatar billede mini-me Nybegynder
01. januar 2005 - 19:34 #3
Hmmm strSQL = "SELECT * From User where Brev='yes'"
Avatar billede trekkies Juniormester
01. januar 2005 - 19:36 #4
Nope, samme fejl.
Avatar billede mini-me Nybegynder
01. januar 2005 - 19:37 #5
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../mindatabase.mdb")

strSQL = "SELECT * FROM user WHERE brev ='yes'"
set rs = conn.execute(strSQL)

if rs.eof or rs.bof then
  response.write("ingen poster")
else
  while not rs.eof or rs.bof
  id = rs("id")
  navn = rs("navn")
  godkend=rs("godkend")
  mail=rs("mail")
  brugernavn = rs("brugernavn")
  brev = rs("brev")

Set msg = Server.CreateOBject( "JMail.Message" )

msg.Logging = True
msg.Silent = True
msg.From = "mail@adresse.dk"  'Afsender e-mail
msg.FromName = "www.darkskies.dk" 'Afsender navn
msg.Charset = "iso-8859-1"

msg.AddRecipient = rs("mail")
msg.Subject = Request.Form("overskrift")
msg.Body = "Hej " & rs("brugernavn")
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & Request.Form("besked")
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & "Med venlig hilsen"
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & "darkskies.dk"
'msg.Send("smtp.mail.dk" ) 'TDC mail server
msg.Send("smtp.tele2.dk" ) 'Tele2 mail server
'msg.Send("mail.dandomain.dk") 'Dandomain mail server

Response.write "Meddelelsen er nu sendt!"

Set msg = nothing

rs.movenext
wend

end if
Avatar billede trekkies Juniormester
01. januar 2005 - 19:43 #6
Det virker heller ikke.

Den siger at fejlen findes i denne linie:
msg.AddRecipient = rs("mail")
Avatar billede mini-me Nybegynder
01. januar 2005 - 19:46 #7
msg.AddRecipient = mail
Avatar billede trekkies Juniormester
01. januar 2005 - 19:50 #8
Det virker bare ikke.

Jeg får stadig denne fejl:
Objektet understøtter ikke denne egenskab eller metode: 'msg.AddRecipient'
Avatar billede mini-me Nybegynder
01. januar 2005 - 19:56 #9
Det er klart !!

msg.AddRecipient mail

sidder og sover :) der ksal ikke vÆre = mellem !
Avatar billede goose Nybegynder
01. januar 2005 - 19:57 #10
Skal det forståes sådan, at hvis du kun bruger:

strSQL = "SELECT * FROM user"

- så virker det godt nok ?

/Goose
Avatar billede trekkies Juniormester
01. januar 2005 - 20:32 #11
strSQL = "SELECT * FROM user WHERE brev ='yes'"
virker fint, men det er kun hvis jeg vælger
msg.AddRecipient = rs("mail")
at den fejler.
Hvis jeg ændre koden til f.eks.
msg.AddRecipient = "minmail@adresse.dk"
Så virker det fint, så modtager jeg bare 2 beskeder, fordi at der kun er 2 medlemmer i databasen lige nu, men der skal sendes EN mail til dem som har brev = yes, og det vil den ikke.

Kender I en metode?
Avatar billede mini-me Nybegynder
01. januar 2005 - 20:35 #12
du skal ændre din msg.addRecipient til msg.addRecipient rs("mail") uden = lige som du gØr når du sender til din test...
msg.AddRecipient "mail@adresse.dk"
'msg.AddRecipient = rs("mail")
bemærk forskellen !
Avatar billede mini-me Nybegynder
01. januar 2005 - 20:37 #13
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../mindatabase.mdb")

strSQL = "SELECT * FROM user WHERE brev ='yes'"
set rs = conn.execute(strSQL)

if rs.eof or rs.bof then
  response.write("ingen poster")
else
  while not rs.eof or rs.bof
  id = rs("id")
  navn = rs("navn")
  godkend=rs("godkend")
  mail=rs("mail")
  brugernavn = rs("brugernavn")
  brev = rs("brev")

Set msg = Server.CreateOBject( "JMail.Message" )

msg.Logging = True
msg.Silent = True
msg.From = "mail@adresse.dk"  'Afsender e-mail
msg.FromName = "www.darkskies.dk" 'Afsender navn
msg.Charset = "iso-8859-1"

msg.AddRecipient rs("mail")
msg.Subject = Request.Form("overskrift")
msg.Body = "Hej " & rs("brugernavn")
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & Request.Form("besked")
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & "Med venlig hilsen"
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & "darkskies.dk"
'msg.Send("smtp.mail.dk" ) 'TDC mail server
msg.Send("smtp.tele2.dk" ) 'Tele2 mail server
'msg.Send("mail.dandomain.dk") 'Dandomain mail server

Response.write "Meddelelsen er nu sendt!"

Set msg = nothing

rs.movenext
wend

end if %>
Avatar billede trekkies Juniormester
01. januar 2005 - 20:47 #14
Det virker stadig ikke, sammen fejl    :<
Avatar billede mini-me Nybegynder
01. januar 2005 - 20:53 #15
Har du kopieret ordret det jeg har skrevet ind ??
Avatar billede trekkies Juniormester
01. januar 2005 - 20:55 #16
Ja, direkte af, rettede database linket til.
Avatar billede mini-me Nybegynder
01. januar 2005 - 20:55 #17
Det her virker...

<%

EmailArr = "cb@eliteweb.dk, cbi@eliteweb.dk"
EmailArr = split(EmailArr,",")

for each Email in EmailArr


Set msg = Server.CreateOBject( "JMail.Message" )

msg.Logging = True
msg.Silent = True
msg.From = "mail@adresse.dk"  'Afsender e-mail
msg.FromName = "www.darkskies.dk" 'Afsender navn
msg.Charset = "iso-8859-1"

msg.AddRecipient Email
msg.Subject = "test"
msg.Body = "Hej " & "clark"
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & "besked"
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & "Med venlig hilsen"
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & "darkskies.dk"
'msg.Send("smtp.mail.dk" ) 'TDC mail server
msg.Send("smtp.tele2.dk" ) 'Tele2 mail server
'msg.Send("mail.dandomain.dk") 'Dandomain mail server

Response.write "Meddelelsen er nu sendt!"

Set msg = nothing
next
%>


Prøv evt lige at test det her og så skriv outputtet her...

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../mindatabase.mdb")

strSQL = "SELECT * FROM user WHERE brev ='yes'"
set rs = conn.execute(strSQL)

if rs.eof or rs.bof then
  response.write("ingen poster")
else
  while not rs.eof or rs.bof
  response.write(rs("Email"))
end if

%>

hvis du som sagt har 2 mail adresser i databasen og begge er yes vil de nu blive returneret
Avatar billede trekkies Juniormester
01. januar 2005 - 21:02 #18
Hvis jeg prøver din test formular, så for jeg denne fejl

Fejltype:
Der opstod en Microsoft VBScript-kompileringsfejl (0x800A0400)
En sætning var ventet
/darkskies/admin/brev_gem_incl1.asp, line 65
end if
Avatar billede trekkies Juniormester
01. januar 2005 - 21:02 #19
for = får
Avatar billede mini-me Nybegynder
01. januar 2005 - 21:05 #20
øhhh hvad??

Det her skal virke... ellers har du en fejl et andet sted ?!? Har du evt noget mere kode ??

<%

EmailArr = "cb@eliteweb.dk, cbi@eliteweb.dk"
EmailArr = split(EmailArr,",")

for each Email in EmailArr


Set msg = Server.CreateOBject( "JMail.Message" )

msg.Logging = True
msg.Silent = True
msg.From = "mail@adresse.dk"  'Afsender e-mail
msg.FromName = "www.darkskies.dk" 'Afsender navn
msg.Charset = "iso-8859-1"

msg.AddRecipient Email
msg.Subject = "test"
msg.Body = "Hej " & "clark"
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & "besked"
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & "Med venlig hilsen"
msg.Body = msg.Body & vbCrLf
msg.Body = msg.Body & "darkskies.dk"
'msg.Send("smtp.mail.dk" ) 'TDC mail server
msg.Send("smtp.tele2.dk" ) 'Tele2 mail server
'msg.Send("mail.dandomain.dk") 'Dandomain mail server

Response.write "Meddelelsen er nu sendt!"

Set msg = nothing
next
%>

Kan du ikke lige poste hele brev_gem_incl1.asp her...
Avatar billede trekkies Juniormester
01. januar 2005 - 21:09 #21
Jeg har fundet ud af at den ikke finder noget i databasen.
Avatar billede mini-me Nybegynder
01. januar 2005 - 21:10 #22
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../mindatabase.mdb")

strSQL = "SELECT * FROM user WHERE brev =yes"
set rs = conn.execute(strSQL)

if rs.eof or rs.bof then
  response.write("ingen poster")
else
  while not rs.eof or rs.bof
  response.write(rs("Email"))
end if

%>

Personligt ville jeg nok ændre database feltet til en true/false gør det lidt nemmere :)
Avatar billede trekkies Juniormester
01. januar 2005 - 21:11 #23
Jeg har prøvet at ændre min SQL til:
strSQL = "SELECT * FROM user"

selv der finder den ikke noget.
Avatar billede mini-me Nybegynder
01. januar 2005 - 21:13 #24
øhhh du er sikker på at du har en user tabel med posts i i databasen???

Kan du ikke lige poste hele din fil her?
Avatar billede mini-me Nybegynder
01. januar 2005 - 21:16 #25
Prøv lige flg. kode...

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("../mindatabase.mdb")

strSQL = "SELECT * FROM user"
set rs = conn.execute(strSQL)

if rs.eof or rs.bof then
  response.write("ingen poster")
else
  while not rs.eof or rs.bof
  response.write(rs("Email"))
  rs.movenext
  wend
end if

%>
Avatar billede trekkies Juniormester
01. januar 2005 - 21:20 #26
Nu kan jeg få den til at hente noget i databasen, men kun min egen mail adresse, den anden vil den ikke tage, jeg har prøvet med følgende SQL streng:
strSQL = "SELECT * FROM user WHERE brev =" & "yes"
strSQL = "SELECT * From User where Brev=yes"
strSQL = "SELECT * From User where Brev='yes'"
strSQL = "SELECT * FROM user"

Men de hjælper ikke.
Avatar billede mini-me Nybegynder
01. januar 2005 - 21:27 #27
hmm send filen og databasen i en zip fil til cb@eliteweb.dk så skal jeg lige kigge på det.
Avatar billede trekkies Juniormester
01. januar 2005 - 21:27 #28
Den vil kun finde mine oplysninger, det er selv om at jeg bruger denne SQL:
strSQL = "SELECT * FROM user"
Avatar billede mini-me Nybegynder
01. januar 2005 - 21:57 #29
Hvad siger du til at fremsende koden ??
Avatar billede trekkies Juniormester
01. januar 2005 - 21:58 #30
Du får den lige om lidt.
Avatar billede mini-me Nybegynder
01. januar 2005 - 22:29 #31
Jeg har postet dig en E-Mail ;)
Avatar billede trekkies Juniormester
01. januar 2005 - 22:42 #32
Mange tak for hjælpen igen :)
Avatar billede mini-me Nybegynder
01. januar 2005 - 22:43 #33
<%
    Set Conn = Server.CreateObject("ADODB.Connection")
    Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("newsletter.mdb")
   
    ' Hent fra database de brugere som har "YES"
    strSQL = "SELECT * FROM user where Brev = Yes"
    set rs = conn.execute(strSQL)
   
    ' Der er fordi du ikke løber løkken igennem...  du henter kun den første post nu har jeg rettet det til med flg. kode
   
    ' Tjek for tomme post i databasen
    if rs.eof or rs.bof then
        response.Write("Vi fandt ingen brugere i databasen... ")
    else
        ' Vi køre en løkke som udskriver alle vores bruger i databasen...
        while not rs.eof or rs.bof
       
            ' Laver Variabler da vi kun kan hente RS("Mail") ud éen gang i vores løkke... hvis du gør det flere gange vil det næste udtræk være tomt..
            mailAdresse = rs("Mail")
            overskrift = Request.Form("overskrift")
            besked = request.Form("Besked")
            brugernavn = rs("Brugernavn")
           
            response.Write("<br>")
           
           
            ' AFSEND MAILS....
                Set msg = Server.CreateOBject( "JMail.Message" )
                    msg.Logging = True
                    msg.Silent = True
                    msg.From = "mail@adresse.dk"  'Afsender e-mail
                    msg.FromName = "www.darkskies.dk" 'Afsender navn
                    msg.Charset = "iso-8859-1"
                   
                    msg.AddRecipient mailAdresse
                    msg.Subject = Overskrift
                    msg.Body = "Hej " & brugernavn
                    msg.Body = msg.Body & vbCrLf
                    msg.Body = msg.Body & vbCrLf
                    msg.Body = msg.Body & besked
                    msg.Body = msg.Body & vbCrLf
                    msg.Body = msg.Body & vbCrLf
                    msg.Body = msg.Body & "Med venlig hilsen"
                    msg.Body = msg.Body & vbCrLf
                    msg.Body = msg.Body & "darkskies.dk"
                    msg.Send("smtp.tele2.dk" ) 'Tele2 mail server
                    Response.write "Meddelelsen er nu sendt til: " & MailAdresse
                    Set msg = nothing
                ' Afsendelsen afsluttet
               
        ' Koer til naeste post
        rs.movenext
        wend
   
    end if
   
%>
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