/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Udsendelse af brev
Fra : Knud Jensen


Dato : 24-03-03 20:46

Hej NG

Hvordan får jeg laver en løkkestruktur i nedenstående kode så jeg kan få
sendt en mail ud til alle mine brugere?

Jeg har en DB hvori jeg udtrækker fornavn, efternavn og email-addresse.

Mit problem er bare hvor jeg skal indsætte løkken og hvordan.

Tak
Knud

-----------------------------------------------------------------

<%
'Vi definerer message objektet
Dim objMsg
Set objMsg = Server.CreateObject("CDO.Message")

'Vi definerer Konfigurationsobjektet som indeholder
'oplysninger om f.eks. mailserver
Dim objConf
Set objConf = Server.CreateObject("CDO.Configuration")

'Vi læser alle indstillingerne fra konfigurationsobjektet over i
'en collection
Dim ConfFields
Set ConfFields = objConf.Fields

With ConfFields

'Her specificeres hvordan mailen sendes. Vi vælger 2 for at sende igennem en
port og ikke f.eks. exchange
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

'Her specificeres SMTPserverens navn
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") =
"smtp.mail.dk"

'Her specificeres timeoutlængden til SMTPserveren

..Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"
) = 10 ' Hurtig timeout
.Update
End With


With objMsg

' Vi sætter nu Configuration parametren på message objectet lig med
voreskonfigurations objekt
Set .Configuration = objConf

'Vi sætter modtageren
.To = """" &strFornavn&" "&strEfternavn&""" <" & strEmail &">"

'Vi sætter afsenderen
.From = """Knud"" kn@kn.kn"

'Vi sætter emnet
.Subject = "Nyhedsbrev"

'Vi sætter teksten i mailen som HTML
.HTMLBody = ""&strNyhed& ""

.Send
End With

'Vi rydder op
Set objConf = Nothing
Set objMsg = Nothing
end if
%>



 
 
Knud Jensen (24-03-2003)
Kommentar
Fra : Knud Jensen


Dato : 24-03-03 23:13

Jeg må hellere tilføje at sætter jeg nedenstående løkke uden om koden får
jeg denne fejl:

Expected statement
/ksbh/udsendnyhedsbrev.asp, line 137
end if


---------------------------------------------------------------
<%' Gennemløb Recordset (rs) med en løkke
Do While Not rs.EOF
%>

Kode fra ovenstående tråd

<%
rs.MoveNext

' Fortsæt indtil rs er gennemløbet (EOF = End Of File)
Loop
%>
---------------------------------------------------------------

Men jeg tror nu det er fejl i koden til hvor mailen skal sendes til:

..To = """Brugerne"" <" Response.Write rs("Email") ">"

Er syntaksen forkert? Koden er ændret lidt i forhold til foregående tråd.

Tak



Jens Gyldenkærne Cla~ (25-03-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-03-03 00:07

Knud Jensen skrev:

> Jeg må hellere tilføje at sætter jeg nedenstående løkke uden
> om koden får jeg denne fejl:
>
> Expected statement
> /ksbh/udsendnyhedsbrev.asp, line 137
> end if

Der er formentlig en skæv indlejring i din kode. Hvis du har

IF <et eller andet> Then

   Do While Not rs.EOF

End If

   Loop

- så kan koden ikke læses korrekt.

NB: Læs også følgende starthjælp til asp-gruppen:
<http://asp-faq.dk/article/?id=41>. Det er meget godt at vide at
der fejl i linje 137, men bedre når man også ved _hvilken_ linje
der er nummer 137.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Knud Jensen (25-03-2003)
Kommentar
Fra : Knud Jensen


Dato : 25-03-03 00:22

> Der er formentlig en skæv indlejring i din kode. Hvis du har
>
> IF <et eller andet> Then
>
> Do While Not rs.EOF
>
> End If
>
> Loop
>
> - så kan koden ikke læses korrekt.

Jeg er overbevidst om at det er denne kode der er vrøvl med:

---------------------------------------------------------------
Do While Not rs.EOF

kode der virker

..To = """Brugerne"" <" Response.Write rs("Email") ">"

kode der virker

rs.MoveNext
Loop
---------------------------------------------------------------

Kan du hjælpe med syntaksen? Er det rigtigt at skrive <" Response.Write
rs("Email") "> eller er syntaksen anderledes?

Tusind tak



Jens Gyldenkærne Cla~ (25-03-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-03-03 00:41

Knud Jensen skrev:

> Jeg er overbevidst om at det er denne kode der er vrøvl med:

[snip]

Jeg er overbevist om at jeg ikke kan hjælpe mere før du har læst
<http://asp-faq.dk/article/?id=41>.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Knud Jensen (25-03-2003)
Kommentar
Fra : Knud Jensen


Dato : 25-03-03 10:03

> > Jeg er overbevidst om at det er denne kode der er vrøvl med:

Jeg prøver selvfølgelig gerne at uddybe mit indlæg:

Jeg selecter alle mine brugere:

strSQL = "Select email from bruger"

Så skal jeg lave en lykke der udskriver alle brugeres email adresser i "to"
feltet:

<%
Do While Not rs.EOF

[flyttet overflødigt kode]

.To = """Test""<Response.Write("Email")>"

[flyttet overflødigt kode]

rs.MoveNext

Loop

Conn.Close
Set Conn = Nothing
%>

Her tror jeg så problemet ligger. Jeg tror ikke jeg får udskrevet værdien
ordentligt.

Fejlen er:

Expected end of statement
/ksbh/nye/admin/udsendnyhedsbrev1.asp, line 118, column 32
..To = """Hej ""<Response.Write("Email")>"
-------------------------------^

Tak igen.



Jens Gyldenkærne Cla~ (25-03-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-03-03 10:14

Knud Jensen skrev:

> Jeg prøver selvfølgelig gerne at uddybe mit indlæg:

Tak.

> Her tror jeg så problemet ligger. Jeg tror ikke jeg får
> udskrevet værdien ordentligt.

Tro er udmærket som rettesnor - men fejlmeddelelsen fra asp-
parseren er langt mere konkret at bruge.


> Fejlen er:
>
> Expected end of statement
> /ksbh/nye/admin/udsendnyhedsbrev1.asp, line 118, column 32
> .To = """Hej ""<Response.Write("Email")>"

Her går det ganske rigtigt galt. Du skal ikke bruge
"Response.write" når du tildeler en værdi til en variabel. Brug i
stedet tegnet "&" til at sætte tekster og variable sammen:

..To = """Hej <" & Email & ">"""

Spørgsmålet er også hvad du egentlig vil have der skal stå i .To?
Ovenstående vil skrive "Hej <foo@bar.dk>" (incl. anførselstegn),
hvis variablen Email indeholder "foo@bar.dk".

Hvis man vil have en mailadresse skrevet på formen
   
   Fornavn Efternavn <mail(@)adresse.dk>

- kan man fx skrive:

..To = Navn & " <" & Email & ">"


Blot skal man være opmærksom på at sammensætningen vil resultere i
fejl hvis enten Navn eller Email indeholder et skilletegn (fx
komma) eller hvis Email indeholder flere mailadresser.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Knud Jensen (25-03-2003)
Kommentar
Fra : Knud Jensen


Dato : 25-03-03 10:56

Hej Igen

Nu er den ene fejl væk men der kommer en ny:

Expected statement
/ksbh/udsendnyhedsbrev.asp, line 138
end if

Det er dette stykke kode (kan også ses nedestående i hele koden)

Set objConf = Nothing
Set objMsg = Nothing
end if

Her er koden. Kan du/i se om det er løkken der er forkert eller?

Benytter jeg <"& Email &"> når jeg bruger en løkke og skal udskrive en ny
email hver gang jeg kommer til "to-feltet"?

Tak endnu engang

------------------------------------------------------------

<%
Do While Not rs.EOF

Dim objMsg
Set objMsg = Server.CreateObject("CDO.Message")

Dim objConf
Set objConf = Server.CreateObject("CDO.Configuration")

Dim ConfFields
Set ConfFields = objConf.Fields

With ConfFields

.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") =
"smtp.mail.dk"

..Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"
) = 10 ' Hurtig timeout
.Update
End With

With objMsg

Set .Configuration = objConf

.To = """" &Fornavn&" "&Efternavn&""" <" & Email &">"

.From = """Knud"" knud@xx.xx"

.Subject = "Nyhedsbrev"

.HTMLBody = ""Dette er en test""

.Send
End With

Set objConf = Nothing
Set objMsg = Nothing
end if

rs.MoveNext

Loop

Conn.Close
Set Conn = Nothing
%>



Jens Gyldenkærne Cla~ (25-03-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-03-03 11:30

Knud Jensen skrev:

> Nu er den ene fejl væk men der kommer en ny:
>
> Expected statement
> /ksbh/udsendnyhedsbrev.asp, line 138
> end if

Som jeg skrev før vil jeg tro at du har en skæv indlejring:


,---- [ <news:Xns93491408475Djcdmfdk@gyrosmod.cybercity.dk> ]
| IF <et eller andet> Then
|
|    Do While Not rs.EOF
|
| End If
|
|    Loop
`----


Den kode du har sendt indeholder


> Do While Not rs.EOF

[snip]

> end if

[snip]

> Loop


Jeg kan ikke afgøre om det "end if" du har stående inde i løkken
har et matchende "if" ovenfor løkken eller det blot er glemt - men
det må under alle omstændigheder ikke stå inde i din løkke. Kode
der omslutter anden kode - for eksempel If..else..end if, With..End
With, Do..Loop - skal indlejres således at ethvert indre element
omsluttes fuldstændigt af alle ydre elementer.

Derfor er <foo><bar></foo></bar> forkert i HTML og XML, og derfor
er IF ... Do ... End If ... Loop forkert i asp.

NB: Citer gerne en smule af det indlæg du besvarer - så er det
lettere at se hvilken sammenhæng dit indlæg kommer i.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Knud Jensen (25-03-2003)
Kommentar
Fra : Knud Jensen


Dato : 25-03-03 11:50

> Den kode du har sendt indeholder
> > Do While Not rs.EOF
>
> [snip]
>
> > end if
>
> [snip]
>
> > Loop

Du har selvfølgelig ret. Sletter lige end if. Jeg skal slet ikke bruge det.
Jeg har jo ingen "if then else - sætning" - ups.

Det går fremad

Nu får jeg så denne fejl

The event class for this subscription is in an invalid partition
/ksbh/udsendnyhedsbrev.asp, line 133

.Send
End With

Set objConf = Nothing
Set objMsg = Nothing

rs.MoveNext

Loop

Conn.Close
Set Conn = Nothing
%>

Linie 133 er den første ".Send"

Kan du/i komme med flere gode ideer

P.S. Har prøvet at finde fejlen vha. google men kan ikke finde nogen
løsning.





Jens Gyldenkærne Cla~ (25-03-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-03-03 12:00

Knud Jensen skrev:

> Nu får jeg så denne fejl
>
> The event class for this subscription is in an invalid
> partition /ksbh/udsendnyhedsbrev.asp, line 133

Den var værre...

> Linie 133 er den første ".Send"

Jeg kan ikke umiddelbart gennemskue fejlmeddelelsen - men en
mulighed kunne være at du har en forkert eller ugyldig mailadresse
i din variabel.

Hov - kommer lige i tanke om at du oprindelig skrev rs("email") og
nu vist blot skrive Email. Det er absolut ikke det samme. Hvis du
skal have værdier fra databasen skal du hente dem via dit
recordset.

NB: Option Explicit er en god ide, hvis du ikke allerede bruger
den. Se her hvordan og hvorfor: <http://asp-faq.dk/article/?id=9>.

--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Knud Jensen (25-03-2003)
Kommentar
Fra : Knud Jensen


Dato : 25-03-03 12:11

> Jeg kan ikke umiddelbart gennemskue fejlmeddelelsen - men en
> mulighed kunne være at du har en forkert eller ugyldig mailadresse
> i din variabel.
>
> Hov - kommer lige i tanke om at du oprindelig skrev rs("email") og
> nu vist blot skrive Email. Det er absolut ikke det samme. Hvis du
> skal have værdier fra databasen skal du hente dem via dit
> recordset.

Jep nu er vi ved at være enige. Jeg havde før mistanke om at problemet var
her.

.To = """Dette er ligegyldigt"" <" & Email &">"

Jeg benytter jo "Select email from bruger"

Derefter laver jeg lykken:

--------------------------------------------------
Do While Not rs.EOF

.To = """Dette er ligegyldigt"" <" & Email &">"

Rs.movenext

Loop
-------------------------------------------------

Min syntaks er ikke rigtig i ovenstående. Jeg skal udskrive email i <" &
Email &">, men så skal jeg da bruge noget lignende <Response.write
rs("email")>.

Takker for din store hjælp.

> NB: Option Explicit er en god ide, hvis du ikke allerede bruger
> den. Se her hvordan og hvorfor: <http://asp-faq.dk/article/?id=9>.

Den kigger jeg på



Knud Jensen (25-03-2003)
Kommentar
Fra : Knud Jensen


Dato : 25-03-03 12:33

Jeg er ved at være der. Det er

..To = """Dette er ligegyldigt"" <" & Email &">"

Der giver problemer.

Hvis jeg sætter

..To = """Dette er ligegyldigt"" <min@mail.dk>"

får jeg mailen 2 gange. Jeg har to brugere i min DB så løkken virker og
koden virker. Problemet er at jeg hver gang jeg kører et recordsæt igennem
ikke får udskrevet emailen rigtigt:

Hvad er syntaksen

.To = """Dette er ligegyldigt"" <Response.write rs("email")>"

Virker i hvert fald ikke.

emailen skal udskrives mellem <>

Takker



Jens Gyldenkærne Cla~ (25-03-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-03-03 11:36

Jens Gyldenkærne Clausen skrev:

> Jeg kan ikke afgøre om det "end if" du har stående inde i
> løkken har et matchende "if" ovenfor løkken eller det blot er
> glemt - men det må under alle omstændigheder ikke stå inde i
> din løkke.

Jeg kan lige præcisere. Hvis du ikke har et matchende if uden for
din løkke kan du løse problemet ved at slette "end if". Hvis du har
et matchende if skal "end if" flyttes ud af løkken.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Jens Gyldenkærne Cla~ (25-03-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-03-03 12:50

Knud Jensen skrev:

> Hvad er syntaksen
>
> .To = """Dette er ligegyldigt"" <Response.write rs("email")>"


Response.write skal væk - men rs() skal ikke væk. Og så skal du
bruge & til at sætte tekstelementer sammen:

.To = """Dette er ligegyldigt"" <" & rs("email") & ">"

Response.write skal kun bruges når du skal udskrive tekst til
browseren. Det er ikke tilfældet herover - der skal du blot flytte
tekst fra en asp-variabel til en anden.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Knud Jensen (25-03-2003)
Kommentar
Fra : Knud Jensen


Dato : 25-03-03 13:14

> .To = """Dette er ligegyldigt"" <" & rs("email") & ">"

Det var løsningen. Mange tak for hjælpen Jens.



Knud Jensen (25-03-2003)
Kommentar
Fra : Knud Jensen


Dato : 25-03-03 13:15

> Det var løsningen. Mange tak for hjælpen Jens.

Hvor kan jeg finde ud af hvornår jeg skal bruge
response.write rs("?")
&("?")&
& rs("?")&

er der en side du kan referere til.

Tak igen



Jens Gyldenkærne Cla~ (25-03-2003)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 25-03-03 13:39

Knud Jensen skrev:

> Hvor kan jeg finde ud af hvornår jeg skal bruge
> response.write rs("?")
> &("?")&
> & rs("?")&

Som jeg skrev før:

Response.write skriver tekst til browseren. Den skal _kun_ bruges
når du skal skrive indhold (eller html-kode) til din side.

Tegnet "&" bruges hver gang du vil sætte tekstelementer sammen.

Skriver jeg

X = "Hej " & "med dig"

- vil X nu indeholde teksten "Hej med dig".

Strengsammensætning bruges fortrinsvis til at sætte variabler
sammen med andre variabler eller anden tekst.

Skriver jeg (efter ovenstående linje)

X = X & ", din gamle dreng"

- vil X nu indeholde "Hej med dig, din gamle dreng".

rs("XXX") bruges når du henter data fra en database. Hvis man har
foretaget en forespørgsel med for eksempel

set rs = Conn.Execute("SELECT navn, email FROM adresser")

- så vil rs indeholde posterne fra forespørgslen. Man kan få fat i
de enkelte felter ved hjælp af deres indeksværdi (rs(0) vil her
indeholde værdien af feltet navn for den aktuelle post) - eller
mere almindeligt via deres feltnavn: rs("feltnavn")
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408935
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste