Sto girando da un pò intorno al problema di inviare una newsletter in modo automatico.
Su un sito precedente, dove i destinatari erano circa 500, non ho avuto alcun problema, e fa tutto in automatico.
Adesso però devo gestire oltre 15.000 destinatari, e quindi il sistema utilizzato precedentemente va in palla...
Ho cercato in rete, ma c'è solo roba piena di funzioni inutili, complessa, che mi porterebbe via molto tempo per ripulirla ... e poi vorrei trovare una soluzione da solo.
Comunque, dopo tanto sbattere la testa, ho pensato di effettuare l'invio a blocchi di 100 email per volta; il modo più veloce, mi sembra(va), è quello di dire alla funzione "selezionami dal db gli indirizzi email da X a Y e fai l'invio".
Finito l'invio, passo i nuovi valori X a Y e ricomincio da capo; e così via.
I valori li passo automaticamente, nel senso che carico in un form il valore Y e lo ripasso alla pagina come valore X+1, mentre per avere Y aggiungo +100.
É farraginoso, lo so, ma fa caldo è la testa fuma...![]()
Comunque, questo è il codice che uso per l'invio:
Ovviamente, le variabili $start e $end vengono passate correttamente, percho faccio un echo sulla pagina per controllarle, e sono quelle giuste.Codice PHP:
$result = mysql_query("SELECT * FROM `test` ORDER BY `num` ASC LIMIT $start,$end");
while ($row = mysql_fetch_array($result)) {
$mail = $row["email"];
$footer = "\n\n-------------------------------------------------------------\nTo unsubscribe this news alert, go to:\n [url]http://www.mysite.com/remove.php?mail=[/url]" . $mail;
$msg = $header . $text . $footer;
$flag_success = mail("$mail", "$subject", "$msg", "From: $from");
}
Però, facendo il test su una tabella di db con 15 mailboxes, fa dei doppi invii.
Per essere più chiaro:
se la lista è composta dalle mailboxes
1) metainfo@metatad.it
2) metaart@metatad.it
3) test1@prova.com
4) test2@prova.com
5) test3@prova.com
6) corsi@viawebinstitute.com
7) info@magmart.it
8) test4@prova.com
9) test5@prova.com
10) test6@prova.com
11) metachannel@metatad.it
12) metanews@metatad.it
13) staff@viawebinstitute.com
14) test7@prova.com
15) test8@prova.com
e se faccio un invio a tre per volta (0/3, 4/7, 8/11, etc..) e cambiando testo per verificare, le prime due ricevono solo la prima email, la 6, la 7 e la 11 ricevono la seconda email, la 6, la 11, la 12 e la 13 ricevono la terza, la 13 riceve la quarta email.
Quindi le mailboxes 6, 11 e 13 ricevono due messaggi.
É come se, alla terza ed alla quarta spedizione, ad ogni nuovo invio aggiungesse le mailboxes dell'invio precedente!
Ma perchè?!... E perchè non lo fa già alla seconda?
La testa fume/fonde...
![]()
![]()