[ stanoje @ 23.10.2003. 14:10 ] @
Odavno me mori ova stvar, pa me zanima sta cenjeni clanovi misle oko ovakve ideje (da li je ovo ista korisno ili se radi o "teranju prasica da lete" lepo, ali da li je korisno). Bio je opet post na temu mailing liste pa sam morao da pitam.

PHP bi mogao da salje mailove uz pomoc lake JS/DOM artiljerije.

Zamislite stranu sa dva frejma. U jednom je lista mailova i javaskript koji poziva
slike u drugom frejmu. Svaka slika je ustvari PHP mailer kojem se prosledjuje id clana liste i id maila koji treba poslati, On(slika skript) vraca jedan gif ako je uspeo da posalje mail i drugi ako nije(npr crveni i zeleni).Ovi gifovi moraju biti razlicite duzine (ili dimenzije) da bi js mogao da zna da li je uspesno poslat mail. Time se efektno izbegava ogranicenje timeouta, sem sto je potrebno da korisnik ima otvoren prozor dok se salju svi mailovi.

Saceka se neko vreme i svi mailovi su poslati. php mailer moze i da ide direktno na odgovarajuci smtp i time aplikacija postaje jos robustnija.

[ broker @ 23.10.2003. 20:35 ] @
Imate dva normalna resenja za mailliste bez ikakvog krpljenja:

1. ako je lita mala strpas sve adrese u Bcc polje i posaljes poruku...

2. podesis negde na nekom listserveru mail listu, ubacis sve clanove liste na nju pa poruke saljes preko liste kako i dolikuje...
[ _owl_ @ 23.10.2003. 22:20 ] @
Mislim da je za ovo bolje koristiti bazu i header("Location: self"), u stvari najbolje je ne raditi ovo iz PHP sa web-a. Ako mora onda u bazi posle svakog uspesno poslatog mail-a (bar sto se PHP-a tice) obelezes kom si clanu poslao mail, i posle nekog vremena uradis header("Location ..."). Normalno pri svakom pozivu skripti proveris kome sve treba poslati mailove.
[ -zombie- @ 27.10.2003. 22:11 ] @
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...
[ ljtruba @ 27.10.2003. 23:44 ] @
Svidja mi se Tomicina ideja sa refreshovanjem strane.
Ja sam mislio da napravim paging tj nesto kao 1-2-3-4-Next>>> ali onda sam se smorio :) jer bih stalno morao da klikcem
[ Free_Sex @ 03.11.2003. 22:38 ] @
Ljudi ja stvarno nemam pojma sa PHP-om ali mi se cinida vi ovde komplikuejte stvari ....

Uzecu za primer flattext bazu :

[email protected]::njegovo_ime::neki::drugi::podaci

Lepo se radi skripta koja cita red po red iz ovog fajla.
Takodje ucita na startu template e-maila koje je otprilike ovako :

Pozdrav ||ime|| !

Zeleo bih da te obavestim o novim ponudama u sekcijama :

- ||interested|| ... bla bla bla

I onda lepo za svaki red iz baze ucita ga, i pise red po red na mailprog sa time sto kada naidje na recimo ||ime|| ona to zameni sa onim sto je iscitala iz baze.

Po svakom poslatom mailu. Dodaje u log file da je posalo mail i kraj ?
Nije mi samo jasno kako moze da se desi da nije neki mail poslat. Mislis da ti se mail vratio ili sta ? Jedino da mailprog ne radi ali to je neka sasvim druga prica ?

Inace vidi se da sam nastrojen ka Perl-u ali ideja je ista kao i algoritam ... dobro manje vise isto :)