Dopo aver scaricato MvcMailer ed eseguito i miei test, posso confermare che SendAsync blocca una richiesta ASP.NET fino al completamento.
Microsoft conferma questo comportamento https://connect.microsoft.com/VisualStudio/feedback/details/688210/smtpclient-sendasync-blocking-my-asp-net-mvc-request
"SendAsync() chiama SynchronizationContext.OperationStarted(), che è un segnale di non disporre dell'istanza HttpContext (o anche avanzare la richiesta) finché l'operazione asincrona è stata completata."
Poiché MvcMailer esegue semplicemente il wrapping di SendAsync da System.Net.Mail, presenta gli stessi limiti.
Il modo corretto di inviare e-mail in modo asincrono è utilizzare qualcosa come WebBackgrounder, in quanto è un'operazione totalmente in background (quindi non importa se si utilizza SendAsync o Send).
Per semplificare le cose, è possibile utilizzare Ajax per inviare l'e-mail, ma questo ha lo svantaggio di essere un client piuttosto che un'operazione del server.
Sarebbe strano se la chiamata asincrona bloccherebbe il thread di richiesta .. –
Sto specificatamente parlando di bloccare una richiesta ASP.NET come discusso in stackoverflow.com/questions/6935427/.... Dato che MvcMailer è un'app MVC, speravo che il progetto risolvesse questo problema. Guardando il codice direi che non è così. – DalSoft