postmark-0.2.7: Library for postmarkapp.com HTTP Api

Safe HaskellNone
LanguageHaskell98

Network.Api.Postmark.Tutorial

Contents

Description

postmark is a haskell toolkit for dealing with the postmarkapp.com api for sending and receiving email.

Synopsis

    Settings

    postmarkHttp "<your api token>"   -- Build PostmarkSettings to talk to
                                      -- the _http_ api with you own api token.
    postmarkHttps "<your api token>"  -- Build PostmarkSettings to talk to
                                      -- the _https_ api with you own api token.
    postmarkHttpTest                  -- Build PostmarkSettings to talk to
                                      -- the _http_ api with the public test token.
    postmarkHttpsTest                 -- Build PostmarkSettings to talk to
                                      -- the _https_ api with the public test token.

    Sending Mail

    Sending a single email.

    import Network.Api.Postmark
    
    request postmarkHttpTest $ email defaultEmail {
          emailFrom = "demo-from@postmark.hs"
        , emailTo = ["demo-to@postmark.hs"]
        , emailSubject = "demo, yes it really is a demo"
        , emailTag = Just "demo"
        , emailHtml = Just "Hello world!"
        , emailReplyTo = "demo-reply-to@postmark.hs"
        }

    Sending multiple emails.

    import Network.Api.Postmark
    
    demo = request postmarkHttpTest $ emails [
        defaultEmail {
          emailFrom = "demo-from@postmark.hs"
        , emailTo = ["demo-to@postmark.hs"]
        , emailSubject = "demo, yes it really is a demo"
        , emailTag = Just "demo"
        , emailHtml = Just "Hello world!"
        , emailReplyTo = "demo-reply-to@postmark.hs"
        }
      , defaultEmail {
          emailFrom = "demo-from@postmark.hs"
        , emailTo = ["demo-to@postmark.hs"]
        , emailSubject = "demo, yes it really is a demo"
        , emailTag = Just "demo"
        , emailHtml = Just "Hello world again!"
        , emailReplyTo = "demo-reply-to@postmark.hs"
        }
      }

    Handling Responses

    Checking if the response is a success, ignoring detail:

    import Network.Api.Postmark
    
    case result of
      PostmarkSuccess _ -> True

    Handling specific failure cases:

    import Network.Api.Postmark
    
    case result of
      PostmarkSuccess a ->  undefined            -- Everything ok.
      PostmarkUnauthorized -> undefined          -- Invalid api token.
      PostmarkFailure (PostmarkError errortype message)
                        -> undefined             -- A standard postmark failure.
      PostmarkUnexpected reason code body message
                        -> undefined             -- Unexpected failure (bug or
                                                 -- api change).

    Handling known postmark failures:

    import Network.Api.Postmark
    
    case errortype of
      PostmarkBadApiToken -> undefined
      PostmarkInvalidEmail -> undefined
      PostmarkSenderNotFound -> undefined
      PostmarkSenderNotConfirmed -> undefined
      PostmarkInvalidJson -> undefined
      PostmarkIncompatibleJson -> undefined
      PostmarkNotAllowed -> undefined
      PostmarkInactive -> undefined
      PostmarkBounceNotFound -> undefined
      PostmarkBounceQueryException -> undefined
      PostmarkJsonRequired -> undefined
      PostmarkTooManyMessages -> undefined
      PostmarkUnkownError Int -> undefined