webForumDet fria alternativet

mass-mail -> script time out -Jmail

ASPur ASP

5 svar · 311 visningar · startad av Obbelix

ObbelixMedlem sedan okt. 2002257 inlägg
#1

Halloj!

Har ett script som skickar info ur en databas till ca 50-60 adresser.
Varje mail innehåller även personlig info så varje mail är unikt.
Men nu har jag stött på patrull!
Servern orkar inte med utan skriker ScriptTimeOut efter en stund.

Har följande kod som skickar mailen

<!--#include file="db_conn.asp" -->

<% 
Set useRs = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * from Users WHERE aktiv = true"

useRs.Open strSQL, strCon

useRs.MoveFirst
do while not useRs.EOF
	Set pRs = Server.CreateObject("ADODB.Recordset")
	strSQL2 = "SELECT [poang] from Topplista WHERE typ = 'user' and user=" & useRs("id") & "and  omgang=" & omg 
	pRs.Open strSQL2, strCon
	
	Set mRs = Server.CreateObject("ADODB.Recordset")
	strSQL3 = "SELECT [match1], [match2], [match3], [match4], [spel_stopp] from Matcher WHERE typ = 'match' and omgang=" & omg  + 1
	mRs.Open strSQL3, strCon
	
	Set mail = CreateObject("JMail.SMTPMail")
	
		mail.sender ="tipset@sunneik.com"
		mail.sendername ="SIK-Tipset"
		mail.addrecipient useRs("epost")
		mail.subject ="SIK-Tipset - Inför omgång " & omg + 1 
		
		mess ="<!DOCTYPE HTML PUBLIC ""-//IETF//DTD HTML//EN"">" & vbCrLf
		mess = mess & "<html><body link=#000000 alink=#000000 vlink=#000000 text=#000000><font color=#000000 face=arial, helvetica>"
		mess = mess & "<b>Hej " & useRs("f_namn") & " " & useRs("e_namn") & "</b><br><br>"
		mess = mess & "Du hade <b>" & pRs("poang") & "</b> rätt i omgång " & omg & "<br><br>"
		mess = mess & "Glöm inte att gå in och tippa nästa omgång.<br>"
		mess = mess & "Matcher omgång " & omg + 1 &":<br><br><b>"
		mess = mess & "&nbsp;&nbsp;" & mRs("match1") & "<br>"
		mess = mess & "&nbsp;&nbsp;" & mRs("match2") & "<br>"
		mess = mess & "&nbsp;&nbsp;" & mRs("match3") & "<br>"
		mess = mess & "&nbsp;&nbsp;" & mRs("match4") & "</b><br><br>"
		mess = mess & "Spelstopp för omgång " & omg + 1 &":<br>" & mRs("spel_stopp") & "<br>"
		mess = mess & "<br>/<a href=http://www.sunneik.com><b>SIK-Tipset</b></a>"
		mess = mess & "<br></font></body></html>"
		mail.htmlbody = mess
		
		mess2 = "Hej " & useRs("f_namn") & " " & useRs("e_namn") & vbCrLf & vbCrLf
		mess2 = mess2 & "Du hade " & pRs("poang") & " rätt i omgång " & omg & vbCrLf & vbCrLf
		mess2 = mess2 & "Glöm inte att gå in och tippa nästa omgång." & vbCrLf
		mess2 = mess2 & "Matcher omgång " & omg + 1 & ":" & vbCrLf & vbCrLf
		mess2 = mess2 & " " & mRs("match1") & vbCrLf
		mess2 = mess2 & " " & mRs("match2") & vbCrLf
		mess2 = mess2 & " " & mRs("match3") & vbCrLf
		mess2 = mess2 & " " & mRs("match4") & vbCrLf & vbCrLf
		mess2 = mess2 & "Spelstopp för omgång " & omg + 1 & ":" & vbCrLf & mRs("spel_stopp") & vbCrLf
		mess2 = mess2 & vbCrLf & "/SIK-Tipset"
		mail.body = mess2
		
		mail.execute
		
	Set mail = Nothing
		
		  if err.number<>0 then
			  response.write "<br><br><b>FEL...</b>"	
		  end if
		  
useRs.MoveNext
loop
	

response.redirect "admin_menu.asp"
%>

Vet att det finns en funktion i JMail som heter mailmerge el liknande. Kollade på http://www.dimarc.net och har även sökt på det här på forumet. Blev några träffar men inga som jag förstod till 100%.
Annars kanske det räcker med att lägga till

Server.ScriptTimeout = 3600

så att den inte tajmar ut...

Har nån nåt bra förslag?

//Peter

OveRRidEMedlem sedan feb. 200112 078 inlägg
#2

Kollade på http://www.dimarc.net

Dimac, inte DiMarc. ;)

En liten fråga; men borde du inte ange vilken adress som skall användas, alltså till SMTP:servern? Jag hittar inte var du fått .execute-metoden ifrån, men mej veteligt använder man .send("XXX.XXX.XXX.XXX"), där alla X är ip-numret till mailservern.

RED. Execute-metoden finns inte alls i JMail, enligt vad jag ser. :)

http://www.dimac.net/websites/dimac/website/products/w3JMail/Reference_4_3

ObbelixMedlem sedan okt. 2002257 inlägg
#3

hehe... råkade visst komma åt "r" i adressen.

jo jag anger serveradress:

mail.serveraddress = "smtp.sunneik.com"

Råkade ta bort det i första inlägget.

Konstigt detta med execute. Använder det till alla andra mail funktioner på sidan och det fungerar.

Så jag borde ersätta

mail.execute

med

mail.send("smtp.sunneik.com")

eller?

Men troligvis kommer samma problem uppstå.

Skulle

Server.ScriptTimeout = 3600

längst upp på sidan kunna vara en temporär lösning?

//Peter

OveRRidEMedlem sedan feb. 200112 078 inlägg
#4

Det är klart att 3600 skulle kunna lösa det, men jag anser att den mängden mail du skickar inte skall vara något problem.

Skumt..

ObbelixMedlem sedan okt. 2002257 inlägg
#5

Jo, det är mysko, för i stort sett samma script används till ett nyhetsbrev och där är det inga problem. Tänkte att det kanske berodde på att den hämtade fler saker ur db:n så att det slöade ner och timade ut.

Men jag får köra på den temporära lösningen tills vidare om ingen annan har nåt bra förslag på hur jag ska göra.

Kollade lite på länken du postade men är inte med för 5 öre. vart ska jag öppna rs:et? vart väljer jag vilka fält som ska vart?
hmmm... vänta här.....kollade just på
http://www.dimac.net/Websites/dimac/Website/Products/w3JMail/Examples_4_3/Mailmerge with ResultSet?highlightword=mailmerge

Först så skapar jag en koppling, öppnar sen rs:et och klämmer in fältnamnet mellan "%%" och "%%" ????

Det står även nåt om "MS pickup directory". Men jag kör win 2000 så då borde det enbart bli

mMerge.BulkMerge myRS, true

Har jag fattat allt rätt då?

PatrikBMedlem sedan mars 20002 836 inlägg
#6

Har för mig att du "måste" ha tillgång till PickUp katalogen.

En liten "fulkodning" runt problemet finner du här: http://www.webforum.nu/showthread.php?s=&postid=334904#post334904

cya,
PatrikB

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