Skip to content

adinapoli/mandrill

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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

  • Add newTemplateMessage' for sending message that uses a template whose sender address and subject are already configured in the Mandrill server.
  • Set mmsg_subject and mmsg_from_email optional.

Version 0.5.3.6

  • Allow the package to work with base >= 4.11 (Courtesy of @basvandijk)
  • Support building with LTS 13.29

Version 0.5.3.5

  • Replaced dependency on lens with microlens (Courtesy of @tom-bop)

Version 0.5.3.3

Version 0.5.3.2

Version 0.5.3.1

Version 0.5.3.0

  • Added support for webhooks (thanks to @mwotton).

Version 0.5.2.3

  • Added support for aeson-1.0.0.0 by relaxing its upper bound.

Version 0.5.2.2

  • Added support for QuickCheck-2.9 by relaxing its upper bound.

Version 0.5.2.1

  • Added Functor, Foldable and Traversable instances to MandrillResponse (Courtesy of @dredozubov)

Version 0.5.2.0

  • Added inbound calls (Courtesy of @mwotton)

Version 0.5.1.0

  • Relaxed the constraint on aeson to allow 0.11.0.0.

Version 0.5.0.0

  • Changed the MandrillHeaders type synonym from Value to Object.

  • Changed the mmsg_metadata and mmdt_values fields from MandrillVars to Object.

  • Changed the mmsg_global_merge_vars and mmvr_vars fields from [MandrillVars] to [MergeVar]

  • Added the MergeVar data type:

data MergeVar = MergeVar {
      _mv_name    :: !Text
    , _mv_content :: Value
    }
  • Removed the MandrillVars type synonym.

Version 0.4.0.0

  • Modified the Base64ByteString type to accept another constructor. This allows the user to pass already-encoded Base64 strings which might be coming upstream.

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.

About

Pure Haskell client for the Mandrill JSON API

Resources

License

Stars

Watchers

Forks

Packages

No packages published