Hi Wei,
Yes, you are right. Also, consider using SendGrid nuget package instead of implementing it from scratch. In this case it will be as simple as:
- Create Kentico custom email provider
- Inside provider, map "Kentico email" model to "Sendgrid API email" model
- Call Sendgrid API using their library method
- Also, you can store Sendgrid API connection details in Kentico settings, or your app setings