Azure Functions: Send email using SendGrid

Prior to Azure Functions announcing their General Availability (GA) I had previously used SendGrid as an output binding in order to send email messages.

Since GA, however, the ability to use SendGrid remains undocumented (I assume to give the Functions team time to test and document the binding properly) and the old approach I was using no longer seems valid.

As I needed to use this feature I spent some time digging into getting this working with the GA release of Azure Functions (version ~1). Thankfully as Functions is an abstraction over WebJobs I had plenty of information on how to do it right now thanks to the WebJobs documentation and extensibility :).

Here’s how you can get this working too:

1. Register your SendGrid API key in Application Settings: you must utilise the documented approach of setting your API key in an App Setting called “AzureWebJobsSendGridApiKey”. Without this your Function won’t be able to send mail successfully.

2. Import the SendGrid nuget package into your Function by creating a project.json file that contains this following:

3. Create an output binding on your function that will allow you send the message without needing to create client code in your Function:

4. Add a reference and using statement in your run.csx to ensure you have the right packages included. You can see this in the run.csx below that has all you need to create and send a simple email to a single recipient.

If you want to do a lot more customisation of the email that is sent you can simply refer to the SendGrid C# Library on Github which covers features such as sending using templates.

Once the Functions team publishes an updated approach to using SendGrid I’ll make sure to link to it from here. In the meantime… happy mailing!

Tagged , ,

6 thoughts on “Azure Functions: Send email using SendGrid

  1. Dan Parker says:

    So I want to put the mail in private method in my function, but I keep getting the error.

    Exception while executing function: Functions.XXXXXXXXXXXXX. Microsoft.Azure.WebJobs.Host: Error while handling parameter message after function returned:. Microsoft.Azure.WebJobs.Extensions.SendGrid: A ‘To’ address must be specified for the message

    I think the problem is how I’m passing my ‘out Mail message’ to the method.
    I think it might be easier not to use the binding.

  2. So I want to put the mail in private method in my function, but I keep getting the error.

    • Simon says:

      Hi there… Without seeing your code it’s hard to say why you are getting an error response, however, you do need to be mindful of the output binding to SendGrid which requires you populate the necessary Mail object before the Function exits.

  3. […] I blogged about Functions with KeyVault and also on how to deliver emails using Functions with SendGrid. […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: