As Massimo said, many smart SMTP servers have a throttle capability. It could also be limited external to the SMTP server using network throttling.
If your code is blocking, you should send this asynchronously. You can either use the .SendAsync() method on the SmtpClient, which is not my favorite, or using something like SmartThreadPool to create a thread for each message.
If you're sending these asynchronously, you will not be able to enclose the message in a using() statement, so you will need to call .Dispose() on the MailMessage, or there will be resource issues.