[ASP] Cdonts met een while loop

Pagina: 1
Acties:

  • RupS
  • Registratie: Februari 2001
  • Laatst online: 30-08 20:49
CDONTS dus...

Wat ik nu heb gedaan, is een CDONTS rijtje gemaakt, en hij haalt emailadressen uit de database. Das allemaal geen probleem. Totdat ik dat CDONTS verhaal in een loop doe. Dat pakt ie dus niet.

Zowel als ik
while not mailRS.EOF doe
(hier het hele CDONTS verhaal)
mailRS.MoveNext
wend


doe, of het heel simpel test met:


for i to 3
(hier het hele CDONTS verhaal)
next


Kan ik uberhaupt CDONTS in een loop gooien?

Zoniet hoe moet ik het dan doen in hemelsnaam? ;)

Ik wil geen standaard script jatten en aanpassen, daarom heb ik het ook zelf geschreven, maar ik kom er dus ff niet meer uit....

Goed, ik hoort het wel ...

Thanx alvast...

  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Misschien handig als je de error s plakt enzo.

  • RupS
  • Registratie: Februari 2001
  • Laatst online: 30-08 20:49
Internal Server Error 500

Lekker standaard, fijn om foutopsporing te doen...

  • Exterazzo
  • Registratie: Mei 2000
  • Laatst online: 05-09 14:47

Exterazzo

Qeasy

Bij mij werkt het wel, maar misschien moet je ff proberen om eerst bij elk begin van de loop opnieuw een Cdonts opject te creeeren en op het einde weer te deleten.
Of anders gewoon voor de loop creeeren en na de loop deleten.

Ik zou dus ff de manier proberen waarop jij het niet hebt, want het kan wel.

ik heb het namelijk met een mailinglist ook zo!

Audentia


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Nou, ik zou het telkens opnieuw aanmaken van het object binnen de loop zoveel mogelijk proberen te vermijden, tenzij het natuurlijk echt niet anders kan. Scheelt je een hoop performance namelijk.

Volgens mij kan je adressen ook gewoon puntkomma gescheiden aanbieden (niet getest overigens), dus in halve pseudo-code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<%
set oMail = server.createobject("CDONTS.NewMail")
oMail.From = "jouw@email.adres"
oMail.To = "jouw@email.adres"

sNaarDezeAdressen = ""
set rs = cn.execute("select email from tabel")
while not rs.eof
  sNaarDezeAdressen = sNaarDezeAdressen & rs("email") & ";"
  rs.movenext
wend

oMail.Bcc = sNaarDezeAdressen
oMail.send
set oMail = nothing
%>

of misschien nog ietsjes korter (ook niet getest ;)):
code:
1
2
3
4
5
6
7
8
9
10
11
]<%
set oMail = server.createobject("CDONTS.NewMail")
oMail.From = "jouw@email.adres"
oMail.To = "jouw@email.adres"

set rs = cn.execute("select email from tabel")
oMail.Bcc = rs.getString(,,"",";",)

oMail.send
set oMail = nothing
%>

Today's subliminal thought is:


  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Misschien moet je "Show friendly http errors" even uitzetten bij advanced eigenschappen van ie.
Dan krijg je meer dan alleen 500.

Verwijderd

Kan ook door IIS komen, dattie ingesteld is voor 'vriendelijke error berichtjes' maar ok.

als je die error hier plakt zou dat een stuk helpen ja, en in een loop van b.v. 200 e-mail adressen wil je niet elke keer het cdonts object opnieuw aanmaken.

  • RupS
  • Registratie: Februari 2001
  • Laatst online: 30-08 20:49
Hmmm, ik plak het hele script wel, misschien dat jullie meer zien...
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<%option explicit%>
<HTML>
<BODY>
<%

Dim CDONTSObj, MessageBody,mailDC,mailRS

'CDONTS Aanmaken
Set CDONTSObj = Server.CreateObject("CDONTS.NewMail")

'Database Object aanmaken
Set mailDC = Server.CreateObject("ADODB.Connection")

'Open de Database
mailDC.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\pad\database.mdb;" 

'Recordset Aanmaken
Set mailRS = Server.CreateObject("ADODB.RecordSet")

'Alle Data uit de Tabel halen
mailRS.Open "Select * from mail_personen", mailDC

Do While not mailRS.EOF


'Naar:
CDONTSObj.To = mailRS.Fields("email")

'Van:
CDONTSObj.From = "afzender@eenbedrijf.nl"

'Email adres:
MessageBody = "Geachte relatie etc." 

'Onderwerp E-Mail
CDONTSObj.Subject = "Een bedrijf"

'CDONTS Body object maken van de MessageBody
CDONTSObj.Body = MessageBody

'Versturen die hap!
CDONTSObj.Send


mailRS.MoveNext
loop

'CDONTS Object leeghalen
Set CDONTSObj = nothing

%>

</BODY>
<font face="verdana" size=3 color=#000000>De Mailing List is verstuurd.</font>
</HTML>

Als ik de hele loop uitschakel, werkt het gewoon.... :?

Dus ik ben het ff kwijt...

  • RupS
  • Registratie: Februari 2001
  • Laatst online: 30-08 20:49
K, hij mailt nu wel, maar alleen naar het eerste email adres in de tabel.....

Da vinnik vaag...

Hij mailt dus 1 keer, om vervolgens met de volgende errormelding te komen:
code:
1
2
3
4
5
Microsoft VBScript runtime error '800a01a8' 

Object required 

/mailinglist/mail.asp, line 27

Nu weet ik (dmv de search) dat meestal gebeurt door bijv. het aanroepen van een object dat niet bestaat...

Maar ik snap het dus niet omdat hij wel de eerste pakt....

  • RupS
  • Registratie: Februari 2001
  • Laatst online: 30-08 20:49
^^^SCHOP^^^

Is er niemand die het ziet??

  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 23-08 19:49
ik denk deze:

Set mailRS = Server.CreateObject("ADODB.RecordSet")

  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
a) Wat een idiote schop omhoog
b) Waarom denk je dat?

  • raptorix
  • Registratie: Februari 2000
  • Laatst online: 17-02-2022
Lees gewoon eerst es wat documentatie voordat je begint te zeuren, dit koste 10 seconde zoekwerk:

objMail.To = "jdr@there.com;stephen@there.com;margaret@here.com"

Annie had dit trouwens ook al gezegt.

  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 23-08 19:49
Op donderdag 01 november 2001 13:52 schreef Gert het volgende:
a) Wat een idiote schop omhoog
b) Waarom denk je dat?
b)waarom wil je dat weten?

  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Omdat het handig is te weten waarom je denkt dat daar een fout zit.

  • Mister_X
  • Registratie: Februari 2000
  • Laatst online: 23-08 19:49
het was een gok, want als ik het zeker wist stond de uitleg er wel bij...

Verwijderd

CDONTS kan maar een keer mail sturen vanuit een instantie: Je moet dus elke keer het object instantieren als je wilt loopen. Als je de kans hebt gebruik dan CDO2000 (w2k) progid is CDO.Message, die kan wel meerdere mailtjes sturen met dezelfde instantie. Is overigens gewoon gedocumenteerd op MSDN. Bijvoorbeeld in dit artikel: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnmind99/html/email.asp

[Fragment]Don't get us wrongyou can send email to more than one recipient at once, but you can't reuse a NewMail object by putting it in a loop and changing the To property each time. To send mail to multiple recipients, you need to create and destroy the object each time.[/Fragment]

edit:
Niet op datum gelet, kwam deze tegen omdat ik op ASP gezocht had ofzo, zal er op letten :Z

  • Gert
  • Registratie: Juni 1999
  • Laatst online: 05-12-2025
Wat een bizarre schoppen toch soms. :o
Pagina: 1