The question is not precise enough but I will attempt to answer it anyway. There are a few factors limiting you're options. The best "way" is really up to your circumstances. What deadline are you working against?
Implementing a large, low-level, multi-threaded mail-sending system will take a lot of time compared to the other option you mentioned. Sure, writing the whole thing from scratch is far more elegant than using the SMTP server and the .NET library for sending the mails.
There is also the matter of the bandwidth between the different data. Will the .NET app and the database be running on the same server as the SMTP? If not, how will the pipeline of bandwidth limit the maximum of mails sent per second?
Personally I am a big fan of keeping it simple. Reusing available software is a smart move if the clock is ticking. How often will you be sending thousands of mails? That interval will define if the time frame is sensible or not. Is it so small that you could end up with the system still working on the first "batch" when another version is ready to be sent out?