Um dos maiores problemas ao fazer envio de e-mail é a tempo que demora o seu envio.
Podemos então enviar os e-mails de forma assincrona, sem interromper a execução do programa.
Utiliza-se a classe System.Net.Mail.MailMessage.
public static void SendEmail(System.Net.Mail.MailMessage m)
{
SendEmail(m, true);
}
public static void SendEmail(System.Net.Mail.MailMessage m, Boolean Async)
{
System.Net.Mail.SmtpClient smtpClient = null;
smtpClient = new System.Net.Mail.SmtpClient("localhost");
if (Async)
{
SendEmailDelegate sd = new SendEmailDelegate(smtpClient.Send);
AsyncCallback cb = new AsyncCallback(SendEmailResponse);
sd.BeginInvoke(m, cb, sd);
}
else
{
smtpClient.Send(m);
}
}
private delegate void SendEmailDelegate(System.Net.Mail.MailMessage m);
private static void SendEmailResponse(IAsyncResult ar)
{
SendEmailDelegate sd = (SendEmailDelegate)(ar.AsyncState);
sd.EndInvoke(ar);
}