Después de descargar MvcMailer y ejecutar mis propias pruebas, puedo confirmar que SendAsync bloquea una solicitud de ASP.NET hasta que se complete.
Microsoft confirma este comportamiento https://connect.microsoft.com/VisualStudio/feedback/details/688210/smtpclient-sendasync-blocking-my-asp-net-mvc-request
"SendAsync() llama SynchronizationContext.OperationStarted(), que es una señal para que se deshaga de la instancia HttpContext (o incluso progresar la solicitud) hasta que se ha completado la operación asincrónica."
Como MvcMailer simplemente se envuelve SendAsync desde System.Net.Mail sufre de las mismas limitaciones.
La forma correcta de enviar correo electrónico de forma asincrónica es utilizar algo como WebBackgrounder, ya que se trata de una operación totalmente en segundo plano (por lo que no importa si usa SendAsync o Send).
Para simplificar, también puede utilizar Ajax para enviar el correo electrónico, pero esto tiene la desventaja de ser un cliente en lugar de una operación del servidor.
sería extraño si la llamada Async bloqueará el hilo de solicitud. –
Estoy hablando específicamente de bloquear una solicitud ASP.NET como se discutió en stackoverflow.com/questions/6935427/.... Dado que MvcMailer es una aplicación de MVC, esperaba que el proyecto lo resolviera. Al mirar el código, diría que no. – DalSoft