webForumDet fria alternativet

Skicka mail

3 svar · 157 visningar · startad av kristoffer

kristofferMedlem sedan juni 20001 257 inlägg
#1

Jag skall skicka ett nyhetsbrev till 600 personer och vill vara helt säker på att koden är rätt. Jag är lite orolig för att det kommer bli Timeout och liknande. Bland annat vet jag inte hur det skall se där jag skapar objektet. Detta skall väl hellre göras utanför loopen? Men i så fall måste jag väl tömma variblerna efter varje skick?

<%
   Dim rs, mail, subject, message, data_source, sql_select, no

   no = 0
   message = Request.Form("message")
   sql_select = "select email from users"
   data_source = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db.mdb")

   Set rs = Server.CreateObject("ADODB.Recordset")
   rs.Open sql_select, data_source

   server.scripttimeout = 3600
   While Not rs.EOF
   Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
   Mailer.Timeout = 3600
   Mailer.CharSet = 2
   Mailer.FromName = "gratistavlingar.com"
   Mailer.FromAddress= "nyhetsbrev@gratistavlingar.com"
   Mailer.RemoteHost = "mail.host.com"
   Mailer.AddRecipient "", rs("email")
   Mailer.Subject = Request.Form("subject")
   Mailer.BodyText = message & rs("email")
   Mailer.SendMail
   Set mail = Nothing
rs.MoveNext
   Wend
   rs.Close
   Set rs = Nothing
%>

------------------
http://www.gratistavlingar.com

[Redigerat av kristoffer den 18 jan 2001]

[Redigerat av kristoffer den 18 jan 2001]

kristofferMedlem sedan juni 20001 257 inlägg
#2

Ingen som vet?

------------------
http://www.gratistavlingar.com

VideMedlem sedan dec. 19998 577 inlägg
#3

När jag skall skapa en sådan funktion, så brukar jag lägga till ett fäljt i databasen. Sedan när jag skickat ett brev så sätter jag en etta i brevets post. Jag ändrar sedan SQL-satsen så att vilkoret för att en post skall komma med, är att det nya fältet inte har en etta.

Då spelar det ingen roll om det blir timeout, du kan fortsätta igen tills du har tagit dig igenom hela databasen med adresser...

Sedan kan du ju för att slippa uppdatera sidan själv lägga in META-refresh så länge det finns poster kvar... :)

Mvh, Vide

------------------
Function onLick(name)
Punch.name(in_the_ear)
End Function

Jourhavande Vide

PatrikBMedlem sedan mars 20002 836 inlägg
#4

Skulle oxå "lyfta" ur initieringen av mail komponenten från loopen och på så vis oxå "speeda" upp scriptet lite. Initiering kostar på prestanda.

ex:

<%
Dim rs, mail, subject, message, data_source, sql_select, no
no = 0
message = Request.Form("message")
sql_select = "select email from users"
data_source = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db.mdb")

Set Mailer = Server.CreateObject("SMTPsvg.Mailer")
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql_select, data_source

server.scripttimeout = 3600
While Not rs.EOF
Mailer.Timeout = 3600
Mailer.CharSet = 2
Mailer.FromName = "gratistavlingar.com"
Mailer.FromAddress= "nyhetsbrev@gratistavlingar.com"
Mailer.RemoteHost = "mail.host.com"
Mailer.AddRecipient "", rs("email")
Mailer.Subject = Request.Form("subject")
Mailer.BodyText = message & rs("email")
Mailer.SendMail
rs.MoveNext
Wend
rs.Close
Set rs = Nothing
Set mail = Nothing
%>

cya,

------------------
Private Function OutPut(ByRef sString)
OutPut = "Who gives ..." & sString
End Function

[Redigerat av PatrikB den 23 jan 2001]

129 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)