|
| 1 lille spørgsmål omkring en mailfåkker (m~ Fra : Morten Riis |
Dato : 21-11-02 15:55 |
|
Halløj i mangen kloge ASPfolk.
Er der ikke en enkelt venlig sjæl af jer der kan fortælle mig hvad jeg gør
galt i nedenstående kode?
Mit problemer er:
Ved afsendelse fjernes indsatte mailadresser ikke fra msg.AddRecipient,
hvilket måske er naturligt nok, men aner bare ikke hvilken funktion jeg skal
bruge for at fjerne en modtager igen fra løkken.
Som det er nu laver scriptet mails hvor den første indsatte modtager
optræder i alle mails osv. Det er lidt træls kan man sige...!
-Morten
...:: Koden ::..
--------------------------------------
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="open_db.asp" -->
<%
dim Conn, rs, msg, strSQL, subject, body, counter
IF Request.Form("Submit") = "Send" THEN
strSQL = "SELECT email FROM emails ORDER BY email ASC"
set rs = Conn.Execute(strSQL)
strSQL = "SELECT count(id) AS antal FROM emails"
set rs2 = Conn.Execute(strSQL)
DO UNTIL rs.EOF
' Create the JMail message Object
Set msg = Server.CreateOBject( "JMail.Message" )
' Set logging to true to ease any potential debugging
' And set silent to true as we wish to handle our errors ourself
msg.Logging = true
msg.silent = true
'Get data from form
subject = Request.Form("subject")
body = Request.Form("body")
'Enter the sender data
msg.From = "[mailadresse]"
msg.FromName = "[navn]"
'Enter subject and body
msg.Subject = subject
msg.Body = body
counter = 1
DO UNTIL counter = 20 OR rs.EOF
' Note that as addRecipient is method and not
' a property, we do not use an equals ( = ) sign
recipient = rs("email")
msg.AddRecipient recipient
IF NOT msg.Send("[mailserver]" ) THEN
Response.write "<pre>" & msg.log & "</pre>"
error = true
END IF
'Recipients.Clear
counter = counter + 1
rs.movenext
LOOP
msg.close
LOOP
IF error = false THEN Response.write rs2("antal") & " mails er sendt."
END IF
%>
<html>
<head>
<title>Skriv og send e-mail</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body onLoad="javascript:document.sendmail.subject.focus;">
<form action="sendmail.asp" method="post" name="sendmail">
Subject:
<br>
<input name="subject" type="text" id="e-mail" Style="Width:420px;">
<br><br>
Body:
<br>
<textarea name="body" cols="50" rows="10">
----------
Ønsker du at framelde dig mailinglisten kan det
gøres på xxx.
Du behøver bare at indtaste din e-mail og
trykke Afmeld.</textarea>
<br>
<br>
<input type="submit" name="Submit" value="Send">
</form>
</body>
</html>
<%
Conn.Close
Set Conn = Nothing
%>
---------------------------------
| |
Jakob Andersen (21-11-2002)
| Kommentar Fra : Jakob Andersen |
Dato : 21-11-02 16:06 |
|
"Morten Riis" <news_udenspam@riisweb.dk> wrote
> Ved afsendelse fjernes indsatte mailadresser ikke fra msg.AddRecipient,
> hvilket måske er naturligt nok, men aner bare ikke hvilken funktion jeg
skal
> bruge for at fjerne en modtager igen fra løkken.
Jeg vil tro at du skal bruge:
Set msg = Nothing
for at "nulstille" msg objektet.
--
Jakob Andersen
| |
Morten Riis (22-11-2002)
| Kommentar Fra : Morten Riis |
Dato : 22-11-02 01:03 |
|
"Jakob Andersen" <jakob@effectus.dk> skrev i en meddelelse
news:arist8$168d$1@news.cybercity.dk...
> "Morten Riis" <news_udenspam@riisweb.dk> wrote
> > Ved afsendelse fjernes indsatte mailadresser ikke fra msg.AddRecipient,
> > hvilket måske er naturligt nok, men aner bare ikke hvilken funktion jeg
> skal
> > bruge for at fjerne en modtager igen fra løkken.
>
> Jeg vil tro at du skal bruge:
>
> Set msg = Nothing
>
> for at "nulstille" msg objektet.
Tak Jakob - så virker det!
Men jeg har et spørgsmål i forlængelse til din hjælp.
Den tilrettede kode ses herunder, hvor der nu kun er én løkke. Er det
korrekt at det ikke er muligt at nulstille msg objektet i den "inderste"
løkke fra den første kode, i den første besked i tråden her? Hvorfor at
mailen og dens elementer skal oprettes og afsendes i kun én løkke?
Hvis ovenstående er korrekt, vil det så belaste serveren i højere grad når
der oprettes og lukkes mailobjekt for hver enkelt mail hvis der afsendes 50,
100, 1000 mails ud af gangen?
Venligst
-Morten
...:: Ny kode ::..
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!--#include file="open_db.asp" -->
<%
dim Conn, rs, rs2, msg, strSQL, subject, body, counter
IF Request.Form("Submit") = "Send" THEN
strSQL = "SELECT email FROM emails ORDER BY email ASC"
set rs = Conn.Execute(strSQL)
strSQL = "SELECT count(id) AS antal FROM emails"
set rs2 = Conn.Execute(strSQL)
counter = 1
DO UNTIL counter = 20 OR rs.EOF
' Create the JMail message Object
Set msg = Server.CreateOBject( "JMail.Message" )
' Set logging to true to ease any potential debugging
' And set silent to true as we wish to handle our errors ourself
msg.Logging = true
msg.silent = true
'Get data from form
subject = Request.Form("subject")
body = Request.Form("body")
'Enter the sender data
msg.From = "mail@ufoyepha.dk"
msg.FromName = "Ufo Yepha"
'Enter subject and body
msg.Subject = subject
msg.Body = body
' Note that as addRecipient is method and not
' a property, we do not use an equals ( = ) sign
recipient = rs("email")
msg.AddRecipient recipient
IF NOT msg.Send("xxx" ) THEN
Response.write "<pre>" & msg.log & "</pre>"
error = true
END IF
counter = counter + 1
rs.movenext
Set msg = Nothing
Set recipient = Nothing
'msg.close
LOOP
IF error = false THEN Response.write rs2("antal") & " mails er sendt."
END IF
%>
<html>
<head>
<title>Skriv og send e-mail</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body onLoad="javascript:document.sendmail.subject.focus;">
<form action="sendmail2.asp" method="post" name="sendmail">
Subject:
<br>
<input name="subject" type="text" id="e-mail" Style="Width:420px;">
<br><br>
Body:
<br>
<textarea name="body" cols="50" rows="10">
----------
Ønsker du at framelde dig mailinglisten kan det
gøres på xxx .
Du behøver bare at indtaste din e-mail og
trykke Afmeld.</textarea>
<br>
<br>
<input type="submit" name="Submit" value="Send">
</form>
</body>
</html>
<%
Conn.Close
Set Conn = Nothing
%>
| |
|
|