22. oktober 2003 - 09:29Der er
54 kommentarer og 1 løsning
Sende nyhedsbrev via JMail
Man kan modtage emails via JMail, men jeg vil gerne gøre det modsatte, nemlig udsende et nyhedsbrev til en række emailadresser der ligger i en database. Jeg forestiller mig at lave en løkke der henter adresserne og sende nyhedsbrevet. Min kode ser PT således ud, men virker dog ikke <% while not rsNyhed.EOF Set JMail = Server.CreateObject("JMail.SMTPMail") JMail.ServerAddress = "mail.viborgnet.dk" JMail.Sender = "ole.krogh@pittelitten.dk" JMail.Subject = request.form("subject") JMail.AddRecipient rsNyhed.fields("email").value JMail.Body = request.form("message") & VbCrLf & VbCrLf 'JMail.Body = JMail.Body & "Hilsen" JMail.Execute rs.Movenext wend response.Redirect("nyhedsbrev.asp") %>
Jeg får en fejlmelding i linien med set query_form=connect..... "Et objekt er obligatorisk: ''" Jeg mener de øvrige ting er OK /Ole
'---jmail sendes--start-- 'smtpserver = "mail.viborgnet.dk" Set JMail = Server.CreateObject("JMail.SMTPMail") JMail.ServerAddress = "mail.viborgnet.dk" tabelnavn = "tblEmail" set query_form =connect.execute("select ID_email, email from " & tabelnavn & " order by id desc")
do until query_form.EOF modtager = query_form("email") subject = "Nyhedsbrev fra Himmelrummet.dk"
ja, men email-adresserne hentes fra databasen. Indholdet i emailen hentes fra en form på en anden side der hedder "message" - deraf linien JMail.Body = request.form("message") & VbCrLf & VbCrLf var det det du mente??
nu er der en fejlmelding på linien JMail.Body = request.form("message") & VbCrLf & VbCrLf Et objekt er obligatorisk: '' "message" er et tekstfelt på forrige side som sendes til emailsiden med en submitknap Det hele er måske vanskeligere end jeg først lige troede??
If JMail.Execute then Tjek = "Formularen er sendt" Else Tjek = "<font color=#FF0000>Der er sket en fejl - Prøv igen !</font>" End If
JMail.ClearRecipients
query_form.movenext loop
'---jmail sendes--slut-- response.write tjek
tabelnavn ="nyhedsbrev" 'navn på tabel du indskriver dine data i
'laver recordsættet til db set opdatering = server.createobject("ADODB.recordset") query ="select * from "& tabelnavn &"" opdatering.open query, connect, adopenstatic, adlockoptimistic
'opretter ny linie i db og indskriver tilsendt data opdatering.addnew opdatering("dato") = date opdatering("titel") = trim(request.form("titel")) opdatering("tekst") = trim(request.form("tekst")) opdatering.update opdatering.close
Jeg lkan stadig ikke få det til at virke. Der er problemer med linien nedenfor og jeg kan se i dreamweaver (hvor kodeteksten får forskellige farver) at ordet "connect" ikke er en kendt ordre - det bliver opfattet som en variabel. set query_form = (connect.execute("select * from " & tabelnavn & " order by id desc"))
Afsnittet der indsætter nuhedsbrevet i db er ikke så vigtigt idet brevet ikke behøver at blive gemt. Datebasen indeholder bare emailadresserne i tblEmail.
jo og den hedder . connNyhed.asp og ser således ud: <% dim MM_connNyhed_STRING set MM_connNyhed_STRING=server.createobject("ADODB.connection") MM_connNyhed_STRING.open "driver={microsoft access driver (*.mdb)};DBQ="&server.mappath("../../database/nyhedsbrev.mdb") %> Så vidt jeg ved er der ikke noget galt med den - den fungerer fint nok, for jeg kan godt få adgang til databasen
det er denne fejlmelding jeg får: Fejltype: Der opstod en Microsoft VBScript-kørselsfejl (0x800A01F4) Variablen er ikke defineret: 'connect' /pittelitten/pittelitten.dk/nyhedsbrev/send_nyhedsbrev.asp, line 46
.... og linie 47 er set query_form = (connect.execute("select * from " & tabelnavn & " order by id desc"))
hov, det forklarer jo noget.. set query_form = (MM_connNyhed_STRING.execute("select * from " & tabelnavn & " order by id desc")) men nu får jeg fejlmeldingen... Microsoft OLE DB Provider for ODBC Drivers (0x80040E10) [Microsoft][ODBC Microsoft Access-driver] Der er for få parametre. Der var ventet 1. /pittelitten/pittelitten.dk/nyhedsbrev/send_nyhedsbrev.asp, line 46
tabelnavn er tblEmail og den er deklareret. databasen indeholder pt 4 poster
jo, den ligger her: C:\Programmer\Fælles filer\System\ado\adovbs.inc men jeg får at vide at filen ikke kan findes når jeg laver den som includefile??
Nå, men nu er der en ny fejltype som tyder på at der er hul igennem (jeg kan lige nævne at JMail virker i en anden sammenhæng) Fejltype: jmail.SMTPMail (0x8000FFFF) The message was undeliverable. All servers failed to receive the message /pittelitten/pittelitten.dk/nyhedsbrev/send_nyhedsbrev.asp, line 50
If JMail.Execute then Tjek = "Formularen er sendt" Else Tjek = "<font color=#FF0000>Der er sket en fejl - Prøv igen !</font>" End If
JMail.ClearRecipients
query_form.movenext loop
'---jmail sendes--slut-- response.write tjek
'tabelnavn ="tblEmail" 'navn på tabel du indskriver dine data i
'laver recordsættet til db 'set opdatering = server.createobject("ADODB.recordset") 'query ="select * from "& tabelnavn &"" 'opdatering.open query, connect, adopenstatic, adlockoptimistic
'opretter ny linie i db og indskriver tilsendt data 'opdatering.addnew 'opdatering("dato") = date 'opdatering("titel") = trim(request.form("titel")) 'opdatering("tekst") = trim(request.form("tekst")) 'opdatering.update 'opdatering.close
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.