As already have been mentioned that this is not your application's problem or the source code's problem. The problem in real is the network connection through which you're going to send the emails. And email is a cycle, which is executed as,
Connect to SMTP Server
|-> Transfer Credentials
|-> Send data, recipient, subject and other fields
|-> Get response
|-> Transfer response back
|-> If more emails to be sent, repeat this
.. so the major factor to this is the connection that you're using. Sergey is right, threading won't help infact it will create a new problem on your own system, more executions on the machine. Threading might be applied where you are to go into an async programming or so, but just to send 50 emails, starting 50 processes is insane idea. Yes, it will be a good idea to create an async method that would send these emails asynchronously each time and in 50 loops etc. For more on Async programming, please read
this MSDN documentation[
^] and all other resources attached in it.
A simple loop, meant to send the 5 emails through my 8MB internet connection using Gmail server would take more like 10 seconds. If I had to improve this, I would try to increase the bandwidth to allow more data to be sent and recieved and I would also try to get any premium subscription from the server (if they allow any) to improve the response rate from their side.