ni jedno rešenje nije dobro, a ja ću da vam kažem najbolje ;)
naravno, šalim se malo, ali ovako, redom. prvo, najbolje je rešenje koje je dao broker, ali ni prva ni druga njegova varijanta ne zadovoljavaju slučaj kada je potrebno slati "personalizovane" mailove, tj kada se sadržina (ili subject, ili neki tracking ID ili bilo šta) maila razlikuje od primaoca do primaoca.
dalje, ovo što je owl predložio je prilično blizu mog "preporučenog" rešenja, osim što ne valja koristiti header('Location: self..'); za nastavak, zato što postoji ograničenje od valjda 100 ili koliko refresh-a koji se mogu ostvariti na taj način.
znači, evo kako ja to preporučujem (i kako sam jedared izveo, znači radi ;)
• ubaciš u tabelu sa mailovima još jedno boolean polje "poslao"
• iz forme, preko php-a u bazu/fajl sačuvaš sve podatke za slanje (subject, body...)
• resetuješ polje "poslao" svima na 0
• počneš da šalješ tako što odeš na skriptu send.php
• send.php uzima prvih sledećih 50 (ili koliko već, podešava se) mailova iz baze
• na svaku od tih 50 adresa šalje mail i menja polje "poslao" u 1
• kada završi taj krug, prikaže korisniku poslato 50/356 (može i malo grafike)
• i ubaci <META> refresh tag koji će da počne sledeći krug za recimo 10-15 sekundi
• kada refresh tag ponovo startuje send.php, hvata se sledećih 50, pa jovo nanovo
naravno, opet je potreban da stoji otvoren prozor browsera, ali, čak i kada se prekine slanje (greška ili se zatvori prozor) samo se vratiš na send.php i on nastavi...