Ciao David, secondo me non è una buona pratica inviare 100 mail alla volta.
Ad esempio, se tra questi 100 mail ci sono 50 del provider HOTMAIL, certamente i filtri hotmail si incazzano e la tua mail o viene inviata alla cartella SPAM o viene rifiutata.
Soluzioni? Bhe, le aziende che lavorano con invio di newsletter e che hanno bisogno di inviare migliaia di mail al giorno (purtroppo vale pure a quelle che inviano i maledetti spam) usano soluzioni per "ingannare" i filtri. Ad esempio, HOTMAIL quando riceve 50 mail da uno stesso IP (smtp) fa bene di rifiutare i messaggi.
Quindi, una soluzione adottata è quella di usare più IP per inviare le mail.
Purtroppo, non c'è molto da fare per un sito che usa un server condiviso, visto che non può utilizzare altri IP (come SMTP server) e nemmeno Servizi Windows o altre possibilità di "meccanizzare" il sistema di invio ogni X secondi.
Quello che potresti fare è:
creare una tabella temporanea per ogni newsletter (invio), con il nome utente, indirizzo mail e un campo booleano stato. Fai un select di X registri (pensi tu quanto vuoi, 100... 50...) e dopo l'invio setta lo stato come TRUE, ovvero, MAIL INVIATA.
Nella pagina di risposta metti una funzione javascript che dopo X secondi (vedi tu quanto vuoi) fa l'invio successivo. Puoi pure indicare all'utente: INVIATE X mail di un totale di XXX.
Bella soluzione? NO, NO, NO. Anche perché, se il numero di mail è grande, ci vogliono ore per finire il processo di invio.
Però, visto che i provider usano tanti filtri e il tuo sito usa server condiviso (o sia, senza libertà e possibilità di scegliere alternative migliori) è una soluzione che almeno funziona :)
Ho utilizzato questa soluzione 4 anni fa in un'azienda all'estero e mi pare che fino ad oggi utilizzano il sistema
Però se cerchi un po' su questo argomento (invio di newsletter, filtri spam, regole anti-spam, ecc) magari trovi una soluzione migliore e più moderna.
Saluti