SmtpClient.SendAsync Calls are Automatically Cancelled
It can definitely be a dispose issue. When you dispose the client it cancels any outstanding async operations.
You should dispose the client in Email_OnCompleted
.
An SO post on where to dispose: Dispose SmtpClient in SendComplete?