<p>I may be wrong, but if you are working with SmtpClient.SendAsync in ASP.NET 
2.0 and it throws an exception, the thread processing the request waits 
indefinitely for the operation to complete.</p>

<p>To reproduce this problem, simply use an invalid SMTP address for the host 
that could not be resolved when sending an email.</p>

<p>Note that you should set Page.Async = true to use SendAsync.</p>

<p>If Page.Async is set to false and Send throws an exception the thread 
does not block, and the page is processed correctly.</p>

<p>TIA.</p>

Note that you should set Page.Async = true to use SendAsync.
Please explain the rationale behind this. Misunderstanding what Page.Async does may be the cause of your problems.
Sorry, I was unable to get an example working that reproduced the problem.
See
http://msdn.microsoft.com/en-us/magazine/cc163725.aspx
(WICKED CODE: Asynchronous Pages in ASP.NET 2.0)
EDIT:
Looking at your code example, I can see that you're not using
```
RegisterAsyncTask()
```
and the
```
PageAsyncTask
```
class. I think you must do this when executing asynchronous tasks on a Page where
```
@Async
```
is set to true. The example from MSDN Magazine looks like this:
```
```
protected void Page_Load(object sender, EventArgs e)
{
    PageAsyncTask task = new PageAsyncTask(
        new BeginEventHandler(BeginAsyncOperation),
        new EndEventHandler(EndAsyncOperation),
        new EndEventHandler(TimeoutAsyncOperation),
        null
        );
    RegisterAsyncTask(task);
}
```
```
Inside
```
BeginAsyncOperation
```
, then, should you send a mail asynchronously.