Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/marcelbuesing/sendgrid-v3

Haskell Sendgrid v3 API Library
https://github.com/marcelbuesing/sendgrid-v3

Last synced: 19 days ago
JSON representation

Haskell Sendgrid v3 API Library

Awesome Lists containing this project

README

        

# SendGrid-v3
[![CI](https://github.com/marcelbuesing/sendgrid-v3/actions/workflows/ci.yml/badge.svg)](https://github.com/marcelbuesing/sendgrid-v3/actions/workflows/ci.yml/badge.svg)[![Hackage](https://img.shields.io/hackage/v/sendgrid-v3.svg)](https://hackage.haskell.org/package/sendgrid-v3)

A library for accessing the [v3 SendGrid API](https://sendgrid.com/docs/API_Reference/api_v3.html) in Haskell.

```Haskell
{-# LANGUAGE OverloadedStrings #-}

import Data.List.NonEmpty (fromList)
import Data.Text (Text)
import Network.SendGridV3.Api
import Control.Lens ((^.))
import Network.Wreq (responseStatus, statusCode)

sendGridApiKey :: Text
sendGridApiKey = "SG..."

testMail :: Mail () ()
testMail =
let to = personalization $ fromList [MailAddress "[email protected]" "John Doe"]
from = MailAddress "[email protected]" "Jane Smith"
subject = "Email Subject"
content = fromList [mailContentText "Example Content"]
in mail [to] from subject $ Just content

main :: IO ()
main = do
sendgridSettings <- mkSendGridSettings sendGridApiKey

-- Send an email, overriding options as needed
eResponse <- sendMail sendgridSettings (testMail { _mailSendAt = Just 1516468000 })
case eResponse of
Left httpException -> error $ show httpException
Right response -> print (response ^. responseStatus . statusCode)
```

# Test Setup
```
echo "export SENDGRID_API_KEY='SG.YOURKEY'" > sendgrid.env
echo "export SENDGRID_TEST_MAIL='[email protected]' >> sendgrid.env
source ./sendgrid.env
```