codice:
foreach (DataRow emailDR in emailDt.Rows)
{
    using(SmtpClient smtp = new SmtpClient("out.alice.it", 25))
    {
        msg.To.Add(new MailAddress(emailDR["sEmail"], emailDR["sNomeVis"]));
        smtp.Send(msg);
        msg.To.Clear();
     }
}
using

Se devi inviare 300k email conviene tenere la connessione aperta piuttosto che chiuderla e aprirla per 300.000 volte.