webForumDet fria alternativet

Nyhetsbrev, server time out ???

ASPur ASP

11 svar · 293 visningar · startad av insu

Medlem sedan juli 200223 inlägg
Frågan#1

Problemet ligger i att jag har ca 2000 olika mejl adresser och jag får server time out... Här nere är koden, jag kör en vanlig loop, hur kan jag göra så att jag inte får server time out, eller hur kan jag skicka nyhetsbrev till alla lättast??? Tack i förhand!

<% If Request("Send") = "Yes" THEN %>
<%
DIM Connect, Rs, Sql

Set Connect = Server.CreateObject("ADODB.Connection")
Connect.Open("DRIVER={Microsoft Access Driver (\*.mdb)}; DBQ=" & Server.MapPath("../../db/members.mdb"))

Sql = "SELECT \* FROM Login ORDER BY Namn"
Set Rs = Connect.Execute(Sql)

%>
<%
Do Until Rs.EOF
%>
<% IF NOT Rs("mail") = "" Then %>
<%
Dim Mail, text

text = Request.Form("text")
Mail = Rs("mail")

set objMail = CreateObject("CDONTS.Newmail")
objMail.From = "Mail@mail.com"
objMail.To = Mail
objMail.subject = "Nyhetsbrev"
objMail.body = text
objMail.send
set objMail = Nothing
%>
<% End If %>
<%

Rs.MoveNext
Loop
Rs.Close
Connect.Close
SET Connect = Nothing
SET Rs = Nothing

			%\>

<%
Session("Mess") = "messen är skickad!"
Response.Redirect("admin_mail.asp")

%>
<% End If %>

Medlem sedan mars 2002777 inlägg
#2

Detta problemet har vit uppe femtielva gånger. Sök på tex "nyhetsbrev". ;)

Välkommen till wF förresten!

Medlem sedan juni 200277 inlägg
#3

Gå in i databasen och ändra timeout tiden till 0 eller till tiden som passar. Sätter du det till 0 kommer den aldrig ge en timeout...

Medlem sedan mars 2002777 inlägg
#4

Jag tror ej det är databasen som ger timeout utan VB-motorn. Du kan prova höja timeouttiden:

<% Server.ScriptTimeout = 3600 %>

Prova också att inte loopa hela initieringen av objectet, utan enbart objMail.to. Vill du att inte alla ska se alla adresserna så anger du dig själv som to och lägger in adresserna i objMail.bcc

Medlem sedan okt. 20005 273 inlägg
#5

Mharlin skrev:

Gå in i databasen och ändra timeout tiden till 0 eller till tiden som passar. Sätter du det till 0 kommer den aldrig ge en timeout...

Det är väl inte databasen som säger emot utan servern som kör scriptet :OO

Medlem sedan juli 200223 inlägg
#6

LAMP skrev:

Prova också att inte loopa hela initieringen av objectet, utan enbart objMail.to. Vill du att inte alla ska se alla adresserna så anger du dig själv som to och lägger in adresserna i objMail.bcc

Hur menar du ? Hur kan man loopa bara enbart objMail.to ? Jag förstår det med bcc, men hur loopar man bara to ?

Medlem sedan mars 2002777 inlägg
#7

Du flyttar din loop så att du bara loopar igenom din BCC:

set objMail = CreateObject("CDONTS.Newmail") 
objMail.From = "Mail@mail.com" 
objMail.To = "mail@mail.com"
objMail.subject = "Nyhetsbrev" 
objMail.body = text 

while not RS.EOF
objMail.bcc = RS("mail") 
RS.movenext
wend

objMail.send 
set objMail = Nothing
Medlem sedan mars 20007 896 inlägg
#8
while not RS.EOF
objMail.bcc = RS("mail") 
RS.movenext
wend

Följande borde resultera i att objMail.bcc ändras varje gång loopen körs, och endast den sista i listan får brevet?
Det borde väl vara:

Dim str
str = ""
while not RS.EOF
str = str & ";" & RS("mail") 
RS.movenext
wend

objMail.bcc = str

:q

Medlem sedan mars 2002777 inlägg
#9

Givetvis, det är nog dags för sängen nu innan jag får fler hjärnblödningar. :x

Medlem sedan juli 200223 inlägg
#10

LAMP skrev:


while not RS.EOF
objMail.bcc = RS("mail") 
RS.movenext
wend

Jag förstår nu, man kör alla e-mail adresser in på bcc, förresten kan man lägga hur många e-mail som helst i bcc ? Och måste man använda <% Server.ScriptTimeout = 3600 %> nu också ? Står 3600 för 3600 sekunder eller?

Medlem sedan mars 2002777 inlägg
#11

Ett ytterligare sätt om du har en dbms som stödjer subselects är att bygga ett script dynamiskt som skickar mailen gruppvis, låt oss säga 100 i taget. Men det är jag för trött att redogöra för nu.

Jo, 3600 är sekunder. Du kan sätta vilken siffra du vill där.

Medlem sedan juli 200223 inlägg
#12

LAMP skrev:

Ett ytterligare sätt om du har en dbms som stödjer subselects är att bygga ett script dynamiskt som skickar mailen gruppvis, låt oss säga 100 i taget. Men det är jag för trött att redogöra för nu.

Jo, 3600 är sekunder. Du kan sätta vilken siffra du vill där.

Okay, jag förstår, men hur funkar det med subselects, låter väldigt intressant...

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