Α) Όντως είναι πολύ λάθος ο τρόπος που χειρίζεσαι το exception! Ο κώδικάς σου, όπως είναι γραμμένος, απλά κάνει ότι δε συμβαίνει τίποτα. Δεν υπάρχει χειρότερος τρόπος να χειριστείς ένα exception! Στο catch πρέπει οπωσδήποτε να κάνεις κάτι με αυτό. Ορίστε μερικές επιλογές:
- να το πετάξεις προς τα έξω (throw ex;) για να το πιάσει το runtime
- να το καταγράψεις σε ένα αρχείο log
- να το εμφανίσεις στην οθόνη (π.χ. 'This exception occured ' + ex.Message + '. Would you like to continue?')
- ...να κάνεις κάτι τέλος πάντων με αυτό, όχι να κάνεις ότι δε συνέβει τίποτα!
Β) Επίσης είναι λάθος να βάζεις τόσο μεγάλο timeout. Μπορεί αυτός να είναι και ο λόγος που κόλησε το πρόγραμμά σου. Το timeout, είτε είναι database connection timeout, database command timeout, smtp timeout κλπ. είναι για να κάνεις ένα πρόγραμμα να ξεκολήσει αν ένας server δεν ανταποκρίνεται, πετώντας προς τα έξω ένα timeout exception. Βάζοντας τόσο μεγάλο timeout (3600000 msec = 1 ώρα!) ουσιαστικά λες στον smtp cilent να περιμένει 1 ώρα μέχρι να ανταποκριθεί ο smtp server. Αν ο smtp server είναι κατεβασμένος ή αν ο client έχει κάποιο πρόβλημα δικτύου, τότε θα περιμένεις 1 ώρα μέχρι να το αντιληφθείς! Και λαμβάνοντας υπόψη ότι έχεις ένα loop με χιλιάδες αποστολές e-mail, θα περιμένεις 1ώρα*χιλιάδες φορές! Εφόσον ο smtp server είναι στο τοπικό δίκτυο, ένα timeout της τάξης των 30 δευτερολέπτων είναι αρκετό. Άντε το πολύ 1 λεπτό. Αλλά σε κάθε περίπτωση, αν ο server δεν ανταποκριθεί για ένα μήνυμα τότε πρέπει να εμφανίζεις το exception κάπου και να σταματάς τη διαδικασία αποστολής!
Γ) Νομίζω κατά τα άλλα ότι εφόσον βάζεις τον αποστολέα στο πεδίο BCC (και πολύ σωστά κάνεις για μια τόσο μαζική διαδικασία αποστολής e-mail), θα πρέπει να βάζεις περισσότερους από έναν και να στέλνεις το ίδιο μήνυμα, με μιά εντολή server.send. Π.χ. θα μπορούσες να στέλνεις το μήνυμα σε 50 παραλήπτες ή 100 με ένα send. Θα μειώσεις αρκετά το χρόνο εκτέλεσης.
Δ) Κάτι πολύ σημαντικό! Το ίδιο bug σε ένα κομμάτι κώδικα μπορεί να είναι από ασήμαντο έως και να ξεκινήσει τον τρίτο παγκόσμιο πόλεμο! Το bug που έχεις εσύ στον κώδικά σου έχει στείλει χιλιάδες λάθος e-mail σε πελάτες της εταιρείας σου. Έχει ενοχλήσει πολλούς από αυτούς, ενώ φαντάζομαι ότι το domain name της εταιρείας σου δεν είναι και ότι πιο ευχάριστο για ένα spam filter! Μπορεί να μην είναι και αφορμή για πόλεμο, αλλά είναι αρκετά σημαντικό!
Οι απαντήσεις παρέχονται για συγκεκριμένες ερωτήσεις και χωρίς καμιά εγγύηση. Διαβάστε επίσης τους όρους χρήσης.