Can someone tell me if SendGrid can be used in a Azure worker role project which does not use .net core?
It should work in the Azure worker role. I also do a test , it works correctly on my side. The following is the demo code.
private async Task RunAsync(CancellationToken cancellationToken)
{
var apiKey = "sendgrid APIkey";
var client = new SendGridClient(apiKey);
// TODO: Replace the following with your own logic.
while (!cancellationToken.IsCancellationRequested)
{
Trace.TraceInformation("Working");
var msg = new SendGridMessage
{
From = new EmailAddress("send email", "Sunguiguan"),
Subject = "Hello World from the SendGrid CSharp SDK!",
PlainTextContent = "Hello, Email!",
HtmlContent = "<strong>Hello, Email!</strong>"
};
msg.AddTo(new EmailAddress("another email", "test user"));
client.SendEmailAsync(msg, cancellationToken).Wait(cancellationToken);
await Task.Delay(1000*60, cancellationToken);
}
}

It would also be good to know what is better for using sendgrid for notifications. Worker role or web job or Azure functions?
All of those services could use sendgrid for notification .It depends on what you wanted. We could reference Azure Webjobs vs Azure Functions : How to choose and Azure App Service, Virtual Machines, Service Fabric, and Cloud Services comparison to get more info.