I developed a email sender for my company that can send both async and as i say fire and forget method. We send it through the exchange server. checking the lines of your code, the only difference i can find is that i define:
Properties.Settings settings = new DBPROG.Properties.Settings();
SmtpClient client = new SmtpClient(settings.smtp_server,settings.smtp_port);
client.DeliveryMethod = SmtpDeliveryMethod.Network;
.....
if (securesent)
{
client.SendCompleted += new SendCompletedEventHandler(MailDeliveryComplete);
client.SendAsync(mail, mail.To[0].ToString());
}
else
{
client.Send(mail);
CreateLogFiles SendLog = new CreateLogFiles();
SendLog.ErrorLog("C:\\","\t|Mail sended (Subject): "+mail.Subject.ToString()
+ " \t|TO: " + mail.To.ToString()
+ " \t|FROM: " + mail.From.ToString()
+ " \t|REPLYTO: " + mail.ReplyToList[0].ToString()
, "UNSECURE_SENDLOG", true);
}