In the following code
public static void Send(SmtpClient smtpClient, MailMessage email)
{
try
{
smtpClient.SendCompleted += (sender, e) =>
{
var x = e.Error; // can't access discarded object
};
smtpClient.SendAsync(email, null);
}
catch // never reach
{
// this works
smtpClient.Send(email);
}
}