The
finally { sc.Disconnect(true); }
block inside your loop causes the client to disconnect after the first message is sent, and you never try to reconnect it.
You also don't clear the recipient list after the first message. If you send 10 messages, the first recipient will receive 10 copies, each one with one more address from your list appended to it. The second recipient will receive 9 messages, and so on.
try
{
foreach (string email in lstleads.Items)
{
message.To.Clear();
message.To.Add(MailboxAddress.Parse(email));
sc.Send(message);
Thread.Sleep(3000);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
finally
{
sc.Disconnect(true);
}
NB: This sort of code is highly likely to get your email account banned for spamming.