adinapoli / mandrill

Pure Haskell client for the Mandrill JSON API
MIT License
17 stars 14 forks source link

Build Status Coverage Status

Haskell Client for the Mandrill JSON API

This module implement a low-level, 1:1 mapping API to the Mandrill transactional email service.

Changelog

Version 0.5.4.0

Version 0.5.3.6

Version 0.5.3.5

Version 0.5.3.3

Version 0.5.3.2

Version 0.5.3.1

Version 0.5.3.0

Version 0.5.2.3

Version 0.5.2.2

Version 0.5.2.1

Version 0.5.2.0

Version 0.5.1.0

Version 0.5.0.0

data MergeVar = MergeVar {
      _mv_name    :: !Text
    , _mv_content :: Value
    }

Version 0.4.0.0

Example

This package was built with pragmatism and reuse in mind. This means this API comes in two flavours: an IO-based and an handy monad transformer which can be plugged in your stack of choice. Example:

{-# LANGUAGE OverloadedStrings #-}
import Text.Email.Validate
import Network.API.Mandrill

main :: IO ()
main = do
  case validate "foo@example.com" of
    Left err   -> print $ "Invalid email!" ++ show err
    Right addr -> runMandrill "MYTOKENHERE" $ do
      let msg = "<p>My Html</p>"
      res <- sendEmail (newTextMessage addr [addr] "Hello" msg)
      case res of
        MandrillSuccess k -> liftIO (print k)
        MandrillFailure f -> liftIO (print f)

Supported API versions

Testing online API

To test the online API, first build the package with tests enabled:

cabal install --enable-tests

Then export an environment variable with your Mandrill Test token:

export MANDRILL_API_KEY="YOURKEYGOESHERE"

And finally execute the testsuite:

cabal test

Contributions

This library scratches my own itches, but please fork away! Pull requests are encouraged to implement the part of the API you need.