Hej
Jeg er i færd med at lave en mailinglist og er løbet ind i et problem ved
afsendelse af e-mail til databasens e-mailadresser.
Mit webhotel kræver at jeg ved hver min. 20. mail lukker mailobjektet og
opretter det igen. Eller der vil sige jeg tror det er min host og ikke selve
JMailkomponenten.
Fejlen opstår når jeg vil sende flere end 20 mails. Der sker det, at når de
20 første mails er sendt, så skulle scriptet gerne starte forfra, men der
opstår en fejl. Fejlbekrivelsen er, at der mangler et objekt, men jeg kan
simpelthen ikke se hvor fejlen ligger i den yderste løkke. Se venligst koden
nedenfor.
Når der indsættes On Error Resume Next sendes de 2 sidste mails også,
hvilket vel betyder at det objekt som serveren tror den mangler faktisk ikke
er nødvendigt. Eller hvad?
Fejlbeskrivelse ud fra nedenstående kode:
counter: 1fejl: Object requiredcounter: 1fejl: Object required22 mails er
sendt.
Venligst
-Morten
<%@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)
On Error Resume Next
DO UNTIL rs.EOF
counter = 1
Response.Write "counter: " & counter
DO UNTIL counter = 20 OR rs.EOF
' Create the JMail message Object
Set msg = Server.CreateOBject( "JMail.Message" )
mail.ContentType = "text/html" ' or you can put 'text/plain' for plain
text email
mail.ISOEncodeHeaders = false
mail.ContentTransferEncoding = "8bit"
' 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@mail.dk
msg.FromName = "navn"
'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("websmtp.xxx.dk" ) THEN
Response.write "<pre>" & msg.log & "</pre>"
error = true
END IF
counter = counter + 1
rs.movenext
Set msg = Nothing
LOOP
if Err then
Response.write "fejl: " & Err.description
end if
LOOP
IF error = false THEN Response.write rs2("antal") & " mails er sendt."
END IF
%>
|