webForumDet fria alternativet

Skickar på tok för många mejl

ASP

4 svar · 350 visningar · startad av calson

Medlem sedan dec. 2003487 inlägg
Frågan#1

Hej
Jag håller på att fixa ett skript som skickar ett nytt lösenord till alla adresser sparade i en databas. För att inte göra bort mig använde jag bara min mejl och satte loopen att stanna när X fått ett visst värde.

Nu är X satt till 10 så loopen ska köras 10 ggr. Problemet är att jag fick 55 mejl.

Jag kan inte alls förstå varför eftersom det bara ska skickas ett mejl per loopad omgång.

På sidan skrivs varje person upp vilket fungerar.. det står att jag skickat mejlet till 10 personer men ändå får jag dessto fler mejl i min inkorg.

Här har ni koden om den röran kan hjälpa :)

  strSql=("Select id, strNamn, strEpost From tblMedlem Where strLosen='blabla' order by id ASC")
  Set objRs = objConr.execute(strSql)

	If Not objRs.Eof Then

   	  Dim objJmail
	    SET objJmail = Server.CreateOBject("JMail.Message")
	X = 0
	response.write("<b>Börjar</b><br><br>")
	Do Until objRs.Eof Or X = 10
	  X = X + 1

	  strPwd = ""
	  intId = 1
	  strNamn = objRs("strNamn")	
	  strEpost = "blabla"

[b]Skriver ut namnet[/b]
	    response.write(X &". <i>" & strNamn & "</i>")

[b]Slumpar bokstäver[/b]
         strCode= "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz123456789"
          for intA = 1 to 7
            randomize
            intTest = rnd * len(strCode)
              strPwd= strPwd & mid(strCode,(intTest + 1),1)
          next

	      objJmail.From = "blabla"
	      objJmail.FromName = "blabla"
	      objJmail.AddRecipient strEpost

	    response.write(".....Skickar")
 
	      objJmail.Subject = "Nytt lösenord"
	      objJmail.Body = "Hej " & strNamn & "" & vbNewLine & _
		"" & vbNewLine & _
		"blablabla!" & vbNewLine & "" & vbNewLine & _
                "" & vbNewLine & _

		"blablabla" & vbNewLine & _
		"" & vbNewLine & _

[b]Lägger in det nya lösenordet[/b]
		"Lösenord: " & strPwd & "" & vbNewLine & _
		"" & vbNewLine & _
		"" & vbNewLine & _

		" blabla." & vbNewLine & _
		"" & vbNewLine & _
		"" & vbNewLine & _

		"blablabla!" & vbNewLine & _
		"" & vbNewLine & _
		"blablabla" & vbNewLine & _

		"" & vbNewLine & _
		"" & vbNewLine & _

	        "" & vbNewline & "" & vbNewLine & "blabla " & vbNewLine & "blabla"
  
	      objJmail.ContentType = "text/plain"
 
[b]Skickar mejl en gång[/b]
	      objJmail.Send("smtp.blabla.se")

	    response.write(".....Skickat")

	      objConr.Execute("Update tblMedlem Set strLosen='" & strPwd & "' Where id=" & intId)

	    response.write(".....<b>KLART!</b><br>")
 
	objRs.MoveNext
	Loop

	    Set objJmail = nothing

	Else

	    response.write(".....<b>Något blev fel</b><br>")

	End If

    objRs.Close : set objRs = nothing
  objConr.Close : set objConr = nothing

Tack på förhand

Medlem sedan dec. 2003487 inlägg
#2

Det kommer skickas ut ungefär 180 mejl så om någon ser en bra förbättring får ni gärna säga till :)

Medlem sedan dec. 2003487 inlägg
#3

Jag gjorde lite tester att ändra värdet i x några ggr i hopp om att hitta felet men det gjorde mig inte klokare. kanske kan det hjälpa er:

x = 1 - 1 Mejl
x = 2 - 3 Mejl
x = 3 - 6 Mejl
X = 4 - 10 Mejl

Medlem sedan feb. 20011 198 inlägg
#4

Eftersom objJmail skapas utanför do-loopen så läggs objJmail.AddRecipient strEpost till en gång för varje varv.

Medlem sedan dec. 2003487 inlägg
#5

Kom precis på det :)

Tack för hjälpen

260 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
131 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
133 ms — ändringar (db)