A generalized implementation in .NET Core:
Startup.cs
using SendGrid.Extensions.DependencyInjection; // nuget package: https://www.nuget.org/packages/SendGrid.Extensions.DependencyInjection
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
// sendgrid
services.AddSendGrid(options =>
{
options.ApiKey = Environment.GetEnvironmentVariable("SENDGRID_API_KEY");
});
}
}
EmailController.cs
using SendGrid; // nuget package
public class EmailController : ControllerBase
{
private ISendGridClient _sendGridClient;
public EmailController(ISendGridClient sendGridClient)
{
_sendGridClient = sendGridClient;
}
public IActionResult SendEmail(Email email)
{
var emailManager = new EmailManager(_sendGridClient);
return emailManager.SendEmail(email);
}
}
EmailManager.cs
using SendGrid;
public class EmailManager
{
private ISendGridClient _sendGridClient;
public EmailManager(ISendGridClient sendGridClient)
{
_sendGridClient = sendGridClient;
}
public bool SendEmail(Email email)
{
...
var response = await _sendGridClient.SendEmailAsync(msg);
...
}
}