104 messaggi dal 08 novembre 2001
Ciao a tutti
so che l'oggetto è stato trattato più volte ma pur cercando nel forum non ho trovato risposta ai miei quesiti.
devo creare un form di invio per una mailing list di circa 3000 utenti e volevo soltanto qualche suggerimento in merito. Premetto che ho pieno accesso al server (server virtuale di aruba) quindi posso installare eventuali componenti aggiuntivi.
Mi servirebbe sapere quali controlli posso/devo effetturare per aver la certezza dell'invio della mail e/o quali errori posso intercettare (cioè dal server smtp ) nell'eventualità che qualcosa vada storto
inoltre pensavo di creare un loop sulla tabella indirizzi ed inviare singolarmente una mail, mi chiedevo se ci potevano essere dei problemi e se si quali, che voi sappiate il server smtp di aruba ha limitazioni nell'invio? conviene installare un server stmp sul server virtuale (come www.mailenable.com)?

Grazie per il vosto aiuto
Marco
Ciao,

la classe SmtpClient mette a disposizione un'eccezione (SmtpFailedRecipientsException ) che assolve a quasi tutti i compiti che hai descritto.
try
            {
                client.Send(message);
            }
            catch (SmtpFailedRecipientsException ex)
            {
                for (int i = 0; i < ex.InnerExceptions.Length; i++)
                {
                    SmtpStatusCode status = ex.InnerExceptions[i].StatusCode;
                    if (status == SmtpStatusCode.MailboxBusy ||
                        status == SmtpStatusCode.MailboxUnavailable)
                    {
                        Console.WriteLine("Delivery failed - retrying in 5 seconds.");
                        System.Threading.Thread.Sleep(5000);
                        client.Send(message);
                    }
                    else
                    {
                        Console.WriteLine("Failed to deliver message to {0}", 
                            ex.InnerExceptions[i].FailedRecipient);
                        //Qui raccolgo tutte le mail non inviate
                    }
                }
            }
Non credo che 3000 invi possano rappresentare un problema con aruba ma, è ovviamente solo una supposizione. Test a manetta ...

Fabrizio Canevali
104 messaggi dal 08 novembre 2001
Gazie mille
informazione davvero utile.
il problema che ho adesso è come fare i test
il sito è in produzione non posso utilizzare gli indirizzi nel db e neanche crearmi 3000 email comunque qualcosa mi invento.
credo di aver letto che l'smtp di aruba ha una limitazione di invio di 300 email per volta ma non trovo più il post che lo diceva.
Ammettendo che sia vero pernsi possa essere utile mettere il tread in sleeping (come fai nella tua procedura) durante l'invio ogni tot mail inviate?
grazie
Ciao,
il thread viene messo in "Sleep" solo nel caso in cui SmtpStatusCode è MailboxBusy. In questo caso il sistema attende e riprova ad inivare la mail.
Per il resto arbua costa poco ed è lecito attendersi delle limitazioni.
Ihmo per l'inivio di e-mail "corpose2 sarebbe meglio affidarsi ad un servizio ma mi rendo conto che non è sempre possibile.

Fabrizio Canevali
104 messaggi dal 08 novembre 2001
si ho visto che il tread va in sleep solo in caso di errore
mi chiedevo se poteva essere utile inserire uno "sleep" anche durante l'invio suddividendo le mail a gruppi di 300 per volta poi attendere qualche secondo

in merito alla tua ultima riga hai dei servizi da consigliarmi?
Ciao,

essendo su aruba non puoi installare servizi. Ergo ho fai "accrocchi" incredibili ed insostenibili o ti accontenti.

Fabrizio Canevali
104 messaggi dal 08 novembre 2001
sono su un server virtuale posso installare quello che voglio (a patto di riuscire a farlo funzionare)
ciao,

beh, se hai preso un server in housing prova ad installare un servizio semplicissimo(10 min di lavoro) e fallo girare.

Fabrizio Canevali

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.