Emails are put into a queue and sent via a Cron script that should run every minute.
You can see the queue via Admin > Mail queue.
If they're taking too long to send perhaps the Cron script isn't running every minute, or there's an issue connecting. It'd be worth checking any output from the script (you might need to adjust the Cron entry to output to logger to be able to see this).